vue在导航守卫中添加动态路由刷新失效的问题

问题:添加动态路由后刷新页面新增的路由不显示

分析:可能存在的问题是 router.addRoute()只是注册了一个新路由,如果新增加的路由与当前位置相匹配,则通需通过返回新的位置来触发重定向,才能显示该新路由。

addRoute添加动态路由

// 在导航守卫中通过addRoute动态添加路由
router.beforeEach((to, from ,next) => {
 router.addRoute({
      path: '/test',
      name: 'test',
      component: ()=> import('../views/Test.vue')
    })
})
// 👆会出现一个问题:刷新页面的时候test内容不显示

解决上诉问题👇

通过返回新的位置来触发重定向

router.beforeEach((to, from ,next) => {
  // 添加该判断是为了避免陷入死循环一直添加路由
  if (router.hasRoute('test')) {
    next()
  } else {
    router.addRoute({
      path: '/test',
      name: 'test',
      component: ()=> import('../views/Test.vue')
    })
    next(to) // 通过返回新的位置来触发重定向
  }
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容