javascript - Vue.js - 更新路由器 View

标签 javascript vue.js vuejs2 vue-router

我是 Vue.js 的新手,遇到了这个问题。

我在 App.vue 中有这段简单的代码

<div v-for="brand in response" v-bind:key="brand.BrandId">
    <router-link v-bind:to="{name: 'brand', params: {brandId: brand.BrandId } }">
        {{brand.Name}}
    </router-link>
</div>
<router-view />

router/index.js 路由数组项如下所示:

{
    path: '/brand/:brandId',
    name: 'brand',
    component: () => import('../views/BrandDetail.vue')
}

我收到了来自 API 的响应。它是一个有效的对象数组。菜单显示正常。

我希望路由器 View 在单击路由器链接时更新。它会更新 URL (#/brand/id),但路由器 View 不会更新。

还有其他硬编码的路由器链接。如果我去那里并返回到任何动态添加的路由器链接,它会按预期工作,但如果我单击一个动态路由器链接,然后单击另一个,路由器 View 会卡在第一个。

我还尝试向 key 添加响应式(Reactive)数据源,但这没有帮助。

谁能给我解释一下这是怎么回事?

最佳答案

当您输入您已经在的路线时会发生这种情况,并且组件不会重新加载,即使参数不同也是如此。将您的 router-view 更改为:

<router-view :key="$route.fullPath" />

Vue 在可能的情况下尝试重用组件,这在这种情况下不是您想要的。 key 属性告诉 Vue 为每个唯一键使用组件的不同实例,而不是重复使用一个。由于每组参数的路径都不同,因此这将是一个很好的 key 。

关于javascript - Vue.js - 更新路由器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057473/

相关文章:

javascript - jQuery 检查 Element 是否在 .prevAll() 或 .nextAll() 的结果中

css - 如何根据同胞子属性更改样式

vue.js - 来自 Ajax Request Vue2 的初始化数据

vue.js - 在 vue 组件上循环完成后如何调用语句或方法?

vue.js - Vuetify 粘性标题工具栏

javascript - 抑制非字符键的 keyPress?

javascript - AJAX 请求、表单提交中出现解析器错误

javascript - React Bootstrap 按钮看起来褪色了

javascript - 根据vuex状态重新加载组件数据

javascript - Vuejs <keep-alive> 有什么意义?