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

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了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 (_.isEmpty(accessToken)) {//是否已经登录 否 去登陆页面        next({            path: '/login',            query: {                redirect: to.fullPath            }        })    } else { //已登录用户进入页面        if (to.path === '/login') {            next({ path: '/index' })        } else {            reSetPermissionList(to).then(data => {                data === 'permCode' ? next({ path: to.path, query: to.query }) : next()            })        }    } })

总结

主要通过在全局导航处判断VUEX中的数据是否存在,判断页面是否刷新,是的话重新走一遍权限路由匹配的方法。


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

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

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

相关文章

  • 2022-04-29PS制作漂亮的‘少了你世间万种都成单调’古风图
  • 2022-04-29解决WordPress评论加强:防止游客冒充站长回复别人的办法
  • 2022-04-29PhotoShop设计打造品牌艺术字LOGO效果教程
  • 2022-04-29PHP替换Word中变量并导出PDF图片的实现方法
  • 2022-04-29PhotoShop打造星云四射跳舞的女孩海报效果教程
  • 2022-04-29Javascript如何将时间字符串转化为时间
  • 2022-04-29phpmyadmin怎么使用空密码登入
  • 2022-04-29JavaScript 如何实现横向瀑布流
  • 2022-04-29Phootoshop制作金属质感的字体教程
  • 2022-04-29JavaScript事件之事件冒泡与时间捕获(总结分享)

文章分类

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

最近更新的内容

    • 怎么利用配置文件来管理多个 Node.js 进程
    • 搜索引擎优化中关键词的分类
    • Illustrator设计个性时尚风格的名片教程
    • PHP高清晰度无损图片压缩功能的实现代码
    • 技术教程:如何安装ioncube扩展
    • 关于WordPress删除xmlrpc.php防DDOS攻击
    • 详解PHP中的addcslashes()函数
    • CDR绘制活力城市/海报
    • 设计师应该从四个方面优化网站
    • 用PHP特性trait实现简易Laravel Facade

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

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