簡介
我想很多同學在項目中可能會遇到類似的問題,然后一頓操作,發現結果不盡人意。於是查閱各種資料,走進很多坑(可能你閱讀的這篇隨筆也是個坑)。接下來我所描述的是關於我使用不同權限的用戶切換登陸后,需要我按下鍵盤F5
刷新瀏覽器,路由表才會更新的問題以及如何解決。
有關問題的關鍵詞:
- router.beforeEach()
- router.addRoutes()
- whiteList
- store.getters.token
- router.options.routes
- router.matcher
- resetRouter
目前我使用的是^3.0.1
版本
問題
- 我的所有路由表是靜態寫在
router.js
里面,然后在每一個meta
里面添加一個role
,例如:role: ["home"]
當用戶登錄成功獲取到后來返回的authRoles
(是一個數組,里面對於這個每一個role字符串)。然后在router.beforeEach
的時候比對role
是否有權限訪問,生成新的路由表。 - 在每一個tabs里我會拿取
router.option
進行判斷是否顯示改tab.
解決
- 思考了半天,這可能是vue-router的一個bug,希望早日修復。
- 目前使用
location.reload()
在每一次退出用戶的時候調用刷新文檔解決。