- 先确认在route.js 或者 main.js 中有没有使用路由守卫vue.beforeEach和vue.addRouter() 促使页面每次刷新,重新根据后台返回数据生成动态路由。
// 避免路由守卫进入死循环
let onceRun = true;
router.beforeEach((to,from,next)=>{
if(onceRun){
onceRun = false;
createNewRouter();
// 确保动态路由创建成功后,再去执行其它代码逻辑;在默认的hash模式下,动态路由可能还没创建完成,就跑其它代码
next({...to, replace: true})
} else {
// TODO 这里可以写权限校验的路由跳转校验操作
}
})
function createNewRouter(){
// vue.addRouters() 已经过时,不要使用;替代方案用vue.addRouter()
// 创建动态路由
// 尽量不要使用用缓存,sessionstorage/localstorage
};
- 如果刷新之后成功了,但回退发生了问题 请把路由模式切换成
history
,vue-route 默认使用hash模式。也就是地址上出现眨眼的 /#/ 当然 history模式本体跑没问题。