自己掉坑里面去了, 出來就做個好人, 把坑填了, 至少后面的人, 再掉進去, 容易出來一些
在路由的前置守衛里面, 使用 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 上也是沒有 動態新增的路由的