關於使用 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 上也是沒有 動態新增的路由的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM