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

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

 

在路由的前置守卫里面, 使用 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 失效的问题

上一篇:SDN第一次上机实验


下一篇:HDU 7117 Easy Math Problem