加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

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')

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读