先确认在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模式本体跑没问题。