vue-element-admin動態路由無限循環的解決方法

vue-element-admin是一個非常好用的開源的後臺管理框架,最近在用它做一個公司用的管理平臺,但是公司的項目比較小,沒有權限這個功能,就把if (hasRoles) {next()}這段給刪除了,於是在路由守衛,也就是permission.js裏面碰到了無限循環的問題。

 

爲什麼會出現無限循環呢?先看下代碼

主要是這個next({ ...to,replace : true}),只要next()裏面寫了內容,那麼,一定會重新執行router.beforEach方法,這個時候如果hasRoles如果是否的話,代碼就會繼續執行到next({ ...to,replace : true}),於是就這樣無限循環了;

解決的話也很簡單,像我這種沒有權限功能的情況下,只需要在執行 await store.dispatch('permission/generateRoutes2', my_routers)這段代碼的時候,在方法裏面往vuex裏面寫入roles不就好了嗎?例如:

這樣,vuex裏面不就有roles了嗎?當router.beforEach執行到if (hasRoles) 的時候,hasRoles爲true,那麼代碼就執行到if (hasRoles) {next()} 而不是執行到next({ ...to,replace : true})了

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