【问题标题】:Force re-render of vue component on click of router link单击路由器链接时强制重新渲染 vue 组件
【发布时间】:2020-02-05 03:51:30
【问题描述】:

我在尝试让组件在导航单击时在同一组件上重新呈现时遇到问题。例如,我在 /one -- 单击 /one 的导航链接不会重新渲染我希望它执行的组件。关于如何实现这一目标有什么好的想法吗?

路由器:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
import One from '../pages/One.vue'
import Two from '../pages/Two.vue'

const router = new Router({
   mode: 'history',
   routes: [
    { path: '/one', component: One, name: 'One', meta: {title: 'One'} },
    { path: '/two', component: Two, name: 'Two', meta: {title: 'Two'} },
    ]
});
export default router;

nav.vue:

<template>
  <div>
    <ul>
      <li v-for="item in nav">
        <nav-link class="nav-root-link" v-else :link="item"></nav-link>
      </li>
    </ul>
  </div>

</template>

<script>

  import navLink from './navLink.vue'
  export default {
    components: { navLink },
    data () {
      return {
        groupVisible: [],
        nav: [
          { name: 'One', to: {name: 'One'}},
          { name: 'Two', to: {name: 'Two'}},
        ]
      }
    },
  }
</script>

navLink.vue:

<template>
  <router-link class="nav-link" :to="link.to">
    <span class="nav-link-name">{{ link.name }}</span>
  </router-link>
</template>

<script>
  export default {
    props: {
      link: {
        required: true,
        type: Object
      }
    },
  }
</script>

【问题讨论】:

  • 尝试将 :key 添加到您的组件中。一旦 :key 发生变化,组件就会重新渲染。
  • @RenatoManalili 您的意思是在
  • 、navLink 组件或 nav 链接到的实际组件上添加一个键?
  • @RenatoManalili 好的,但我看不出那里的密钥应该如何改变。仅此一项并不能提供在路线上所需的行为 /one 并在导航点击时重新加载
  • 标签: javascript vuejs2 vue-component vue-router


    【解决方案1】:

    在 nav.vue 中添加 :key

    <template>
      <div>
        <ul>
          <li v-for="(item, index) in nav" :key="index">
            <nav-link class="nav-root-link" v-else :link="item"></nav-link>
          </li>
        </ul>
      </div>
    </template>
    

    【讨论】:

    • 这是@RenatoManalili 给出的评论,我回复了。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签