路由重複註冊Duplicate named routes

問題:

控制檯報錯Duplicate named routes,一開始登錄,切換用戶時都會出現

環境:

vue: 2.6.6 element-ui: 2.10.1 動態權限控制路由

分析:

報錯的意思是路由重複定義。查看靜態路由並沒有出現重複,打斷點發現,動態添加路由執行了多次,增加變量控制只添加一次動態路由。解決登錄報錯,沒有解決切換用戶報錯。切換用戶時router對象並沒有清空上次動態添加的路由,導致切換用戶登錄時動態添加路由報錯。切換用戶時,用戶權限會變,所有必須再次動態添加路由。問題關鍵是切換用戶時把router的動態路由清空,重現添加。

$route.matched

  • 類型: Array<RouteRecord>

一個數組,包含當前路由的所有嵌套路徑片段的路由記錄 。路由記錄就是 routes 配置數組中的對象副本 (還有在 children 數組)。

所以重新給Router.matcher賦值可以達到更新路由配置的目的

router.$addRoutes = (params) => {
  router.matcher = new Router({
    mode: 'history',
    routes: [...StaticBaseRouter],
  }).matcher;
  router.addRoutes(params)
}

用$addRoutes代替原有的addRoutes,StaticBaseRouter是原有的靜態路由

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章