登陸前的固定路由
let router = new Router({
routes: fixedRouter,
base: process.env.BASE_URL
});
登陸后的動態(tài)路由
function $addRoutes(arr) {
router.matcher = new Router({
routes: fixedRouter,
base: process.env.BASE_URL
}).matcher;
for (let i = 0; i < arr.length; i++) {
router.addRoute(arr[i]); // arr登錄后傳進的有權限的路由
}
}
在動態(tài)路由的頁面中刷新后,調用this.$router.back會失效,只有url在動,頁面未刷新。
查看vue-router.common.js, 在HashHistory.prototype.setupListeners 方法中打印發(fā)現(xiàn)使用matcher動態(tài)添加的路由沒有調用該方法
解決方法
直接在代碼 VueRouter.prototype.init 方法初始時手動調用 this. history.setupListeners()。(不推薦,重裝依賴后,需要重新添加)
-
在調用 $addRoutes 動態(tài)添加方法時,調用一下 router.history.setupListeners()
function $addRoutes(arr) { router.matcher = new Router({ routes: fixedRouter, base: process.env.BASE_URL }).matcher; for (let i = 0; i < arr.length; i++) { router.addRoute(arr[i]); // arr 登錄后傳進的有權限的路由 } router.history.setupListeners(); }
調用后router.back開始生效。
使用的vue-router是3.5.1 hash模式