首页 > 其他 > 详细

关于使用 router.addRoutes 失效的问题

时间:2021-09-06 08:58:57      阅读:33      评论:0      收藏:0      [点我收藏+]

自己掉坑里面去了, 出来就做个好人, 把坑填了, 至少后面的人, 再掉进去, 容易出来一些

 

在路由的前置守卫里面, 使用 addRoutes 钩子后, 直接调用 next() , 如果当前页面的 路由 是通过 addRoutes 添加进去的

刷新页面就会出现 对应的路由组件不会渲染的 情况, 也不会报错

 

详细原因未知: 大致理解为, 当进入 路由的  前置钩子 (router.beforEach) 的时候, 路由的结构是不会发生变化的, 至少本次跳转, 路由的结构是不会变化的

 

好比说一张空门禁卡, 你 去注册小区的门禁,  然后物业跟你说, 明天才能用, 你今天刷一万次也打不开

addRoutes 添加的 路由, 当前访问是没法 跳转进去的, 正确的做法是, 调用next, 重定向当前的路由

let isAddRouter = false;
router.beforeEach(to, from, next) {
    if (!isAddRouter) {
        isAddRouter = true
        router.addRoutes([路由])
        // 这一行就是解决问题的最终办法, 重新进当前路由
        next({...to, replace: true})
    } else {
        next()
    }
}       

 

 

所以我们会觉得  router.addRoutes( [路由] ) 是不生效的, 因为打印 router 里面options上的确没有新增的 路由

其实就算生效了, options 上也是没有 动态新增的路由的

关于使用 router.addRoutes 失效的问题

原文:https://www.cnblogs.com/fmg224/p/15223925.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!