vue动态增加路由页面刷新失效的处置方法
发布时间:2022-04-20 09:39:58 所属栏目:语言 来源:互联网
导读:我们在做后台管理系统时,经常有根据不同权限添加不同路由的需求。对于一些新手来说,比较容易容易遇到的问题就是,动态添加的路由页面在刷新出现时失效的情况。那么这时网页刷新出现404是什么原因呢?我们要如何解决? 场景 后台管理系统的权限控制是通过在
我们在做后台管理系统时,经常有根据不同权限添加不同路由的需求。对于一些新手来说,比较容易容易遇到的问题就是,动态添加的路由页面在刷新出现时失效的情况。那么这时网页刷新出现404是什么原因呢?我们要如何解决? 场景 后台管理系统的权限控制是通过在前端页面定义权限code, 把code给后台同学保存配置到表中,之后根据后台返回的权限code列表与前端页面配置的code菜单列表做筛选匹配,code相等的页面就是有权限的页面,再通过router.addRoute()动态添加到路由中,有权限的路由才可以被访问,否则会提示无权限。 固定路由一开始就会放在new Router中,比如登录页面login 出现的问题 登录后,通过调用vuex中的方法,完成获取权限code,动态筛选权限路由页面操作,然后通过router.addRoute()将有权限菜单添加到路由中,进入动态添加的路由页面,刷新页面出现404 原因分析 页面刷新时,路由重新初始化,动态添加的路由此时已不存在,只有一些固定路由(比如登录页面)还在,所以出现了404的情况 解决方案 VUEX store中存储的数据会在页面刷新时清空。 在路由的全局导航router.beforeEach处做个判断,根据VUEX中存放的list是否有值来判断页面是否是刷新,如果不为0,则是第一次登陆,登录后会走匹配路由的方法,不会有问题;如果list.length为0,就为刷新页面,需要重新执行路由匹配,重新添加动态路由即可。 实现代码 route/index.js的导航守卫中添加逻辑判断 ―――router.js――――- const constantRoutes = [ { path: '/', redirect: '/login' }, { path: '/login', name: 'login', meta: { auth: false }, component: () => import('@/views/login') }, { path: '/layout', name: 'layout', meta: { auth: true }, component: () => import('@/views/layout/index'), children: [ { path: '/index', name: 'index', component: () => import('@/views/home') (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |