0

这可能已被问到,但我无法找到解决方案。我有一个加载左侧导航 vue 的索引页面。在该视图上是带有名称的预输入输入。选择名称时,将调用一个函数,并将唯一值作为 pmid_list 传递

        this.$router.push({ name: 'About', params: { pmid_list: item.PMID_Include } }

这第一次运行良好,因为加载了 About vue 并且使用 pmid_list 值调用了该函数。如果我在调用之间刷新页面,每个名称都可以正常工作。如果我不刷新正确的 pmid_list (参数)被发送到路由器,但如果 vue 组件没有改变,路由器决定发送旧的。

从我读过的内容来看,这是一个路由器问题,但我不知道如何强制它刷新。

           export default new Router({
           mode: 'history',
           routes: [
                 {
                   path: '/about/:pmid_list',
                   name: 'About',
                   component: About,
                   props: {default: true}
                   }
4

2 回答 2

1

About正在缓存组件。

使用带参数的路由时要注意的一件事是,当用户从 /user/foo 导航到 /user/bar 时,将重用相同的组件实例。由于两条路由都渲染相同的组件,因此这比销毁旧实例然后创建新实例更有效。但是,这也意味着组件的生命周期钩子不会被调用。

动态路由匹配

如文档中所示,您应该使用 awatcher来响应参数更改:

watch: {
  '$route' (to, from) {
    // react to route changes...
  }
}
于 2018-12-29T05:16:48.797 回答
-1

您可以尝试观察您的路线变化。

watch:{
    '$route.params.pmid_list': function (pmid_list) {
        //your logic here
    }
},
于 2018-12-30T01:39:34.573 回答