關於vue切換用戶,路由表不更新問題


簡介

我想很多同學在項目中可能會遇到類似的問題,然后一頓操作,發現結果不盡人意。於是查閱各種資料,走進很多坑(可能你閱讀的這篇隨筆也是個坑)。接下來我所描述的是關於我使用不同權限的用戶切換登陸后,需要我按下鍵盤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.


- 我在網上找了很多資料,大部分都說需要寫一個 `resetRouter` 函數,重新設置 `match`(試了並沒有什么用)。 - [來自issues](https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465)。 - 開始以后是我的這種方式問題,需要用router.addRoutes這種方式。於是花費大量時間改成addRoutes這種方式,結果依然如此。

解決

  • 思考了半天,這可能是vue-router的一個bug,希望早日修復。
  • 目前使用location.reload()在每一次退出用戶的時候調用刷新文檔解決。


免責聲明!

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



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