问题:添加动态路由后刷新页面新增的路由不显示
分析:可能存在的问题是 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) // 通过返回新的位置来触发重定向
}
})