• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > VUE动态添加的路由页面刷新时失效的原因及解决方案

VUE动态添加的路由页面刷新时失效的原因及解决方案

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了VUE动态添加,VUE路由失效,VUE失效原因等相关知识,希望对您有所帮助

这篇文章主要介绍了vue动态添加的路由页面刷新时失效的原因及解决方案,帮助大家更好的理解和学习使用vue,感兴趣的朋友可以了解下

问题描述

昨天在做vue后台管理系统有关权限页面动态添加到路由的功能时,遇到一个问题:动态添加的路由页面,在页面刷新时出现了404的情况。

场景

后台管理系统的权限控制是通过在前端页面定义权限code, 把code给后台同学保存配置到表中,之后根据后台返回的权限code列表与前端页面配置的code菜单列表做筛选匹配,code相等的页面就是有权限的页面,再通过router.addRoute()动态添加到路由中,有权限的路由才可以被访问,否则会提示无权限。

固定路由一开始就会放在new Router中,比如登录页面login

接口返回

VUE动态添加的路由页面刷新时失效的原因及解决方案

前端菜单定义

VUE动态添加的路由页面刷新时失效的原因及解决方案

vuex中的方法

VUE动态添加的路由页面刷新时失效的原因及解决方案

VUE动态添加的路由页面刷新时失效的原因及解决方案

出现的问题

登录后,通过调用vuex中的方法,完成获取权限code,动态筛选权限路由页面操作,然后通过router.addRoute()将有权限菜单添加到路由中,进入动态添加的路由页面,刷新页面出现404

原因分析

页面刷新时,路由重新初始化,动态添加的路由此时已不存在,只有一些固定路由(比如登录页面)还在,所以出现了404的情况

解决方案

VUEX store中存储的数据会在页面刷新时清空。

在路由的全局导航router.beforeEach处做个判断,根据VUEX中存放的list是否有值来判断页面是否是刷新,如果不为0,则是第一次登陆,登录后会走匹配路由的方法,不会有问题;如果list.length为0,就为刷新页面,需要重新执行路由匹配,重新添加动态路由即可。


实现代码 route/index.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')            }        ]    },    {        path: '*',        component: () => import('@/views/error/404')    }]Vue.use(VueRouter)const createRouter = () =>new VueRouter({    routes: constantRoutes})export function resetRouter() {    const newRouter = createRouter()    router.matcher = newRouter.matcher // reset router}const router = createRouter()//页面刷新后重新设置权限页面动态路由,防止出现动态路由404问题const reSetPermissionList = to => {    return new Promise((resolve, reject) => {        if (to.path !== '/login' && store.state.permission.permissionList.length === 0) {            store            .dispatch('permission/getPermissionList')            .then(() => {                resolve('permCode')            })            .catch(error => {                resolve('permCode')            })        } else {            resolve()        }    })}router.beforeEach((to, from, next) => {      const accessToken = localStorage.getItem('accessToken')    if 
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • VUE动态添加的路由页面刷新时失效的原因及解决方案

相关文章

  • PS打造纸张撕边效果
  • javascript:void什么意思
  • 详解thinkphp6.0.7中怎么使用JWT
  • WordPress“正在执行例行维护,请一分钟后回来”解决方法
  • Linux下正确开启关闭redis的命令是什么
  • 搜索引擎优化技巧_英文关键字篇
  • Photoshop制作颓废的彩色立体字
  • PS+AI设计制作复古的霓虹灯字体效果教程
  • LayUI如何导入excel文件
  • vue3为什么快?vue3的效率提升主要在哪方面?

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 浅谈CSS如何实现九宫格提示超出数量
    • 这几个WordPress插件存在高危漏洞!
    • css如何实现适配iphone全面屏
    • 织梦DEDECMS网站5.5升级5.7SP1不出错的方法
    • 分析laravel8.X关于按照官网的方式使用docker安装和集成本地开发环境遇到的问题
    • 实例详解通过LogMiner实现Oracle数据同步迁移
    • php swfupload中文乱码怎么解决
    • 一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列
    • 利用CSS如何实现全兼容的毛玻璃效果?
    • 关于出现“对不起,您安装的不是正版应用..”的解决办法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有