位置: IT常识 - 正文

vue实现动态路由添加(简单无废话版本)(vue动态路由是什么)

编辑:rootadmin
vue实现动态路由添加(简单无废话版本)

推荐整理分享vue实现动态路由添加(简单无废话版本)(vue动态路由是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue动态路由与静态路由的区别,vue实现动态路由菜单,vue动态路由传参,vue动态路由三种方法,vue实现动态路由跳转,vue实现动态路由的方法,vue实现动态路由跳转,vue实现动态路由菜单,内容如对您有帮助,希望把文章链接给更多的朋友!

最近练习vue的项目,有关于后台管理系统的动态添加路由部分,根据思路实现了基本的功能,在这里记录一下,等后面学习后在进行优化。

这里只是记录我个人最后实现的思路,本人由于是初学者,可能思路和代码有不正确地方,还求多见谅。也请能不吝赐教,一同进步。

一 . 封装一个处理生产路由的函数vue实现动态路由添加(简单无废话版本)(vue动态路由是什么)

我们可以封装一个函数,这个函数专门用来帮助我们生产最后添加到路由中的路由对象。

//map-menu.js //动态添加路由const modules = import.meta.glob('../views/*/*.vue') //vite中获取组件文件的方法export function mapMenu(navList) {//navList 传入后台接口返回的路由列表 //最终动态添加路由返回数组 const routerList = [] for (const key of navList) { routerList.push({ path: `/${key.nUrl.split('/')[2]}`, name: `${key.nUrl.split('/')[2].toUpperCase()}`, component: modules[`..${key.nUrl}`] }) } return routerList}

注意:这里需要大家自己根据自己需要的情况进行处理,因为后端接口传递过来的数据不同,所以你需要根据情况将path,name,component这三个获取出来并最终转换成你需要的。

二. vuex中进行调用

我们封装好了一个函数,接下来我们就需要调用来帮助我们动态生产路由,但是有一个问题来了,我们需要何时来进行动态生成路由。 这里我个人理解是:1.在用户进行登录后进行动态生产路由,将用户的菜单生成出来,并保存起来。 2. 就是在页面刷新时候我们也需要动态生成路由,因为刷新页面路由会刷新,不再次进行动态生成就是丢失,这里我们可以和对vuex初始化一起进行。

// vuex中的user.js模块//动态添加路由import { mapMenu } from '@/util/map-menu.js' //前面封装的函数 state: { userNav: [] }, mutations: { changeUserNav(state, userNav) { state.userNav = userNav //动态添加路由 mapMenu(userNav).forEach((route) => { router.addRoute(route)//动态添加路由 }) } }, actions: { async requestUserNav({ commit }) { const navList = await getRolesNavRequest() commit('changeUserNav', navList) cache.setCache('jxcms-userNav', navList) }}

这样我们就定义好了,只需要调用store.dispatch('requestUserNav') 就可以动态生成路由。另外,因为vue-router4.0中将 router.addRoutes方法废除了,所以我们只能使用 router.addRoute 循环添加所有的路由。

三,最终完成动态添加路由

前面我们说过了,我们动态添加路由的时机就是二个,初始化和登录时候,所以我们现在就完成最后的部分。

// vuex中的user.js模块//动态添加路由import { mapMenu } from '@/util/map-menu.js' //前面封装的函数 state: { ... }, mutations: { ... }, actions: { async loginUser({ dispatch, commit }, info) { const loginRes = await loginUser(info) if (loginRes.uName) { if (!cache.getCache('jxcms-token')) { ElMessage({ message: '登录成功!', type: 'success' }) } commit('changeUser', loginRes) //本地存储 cache.setCache('jxcms-user', loginRes) dispatch('requestUserNav')//执行动态生成路由 router.push('/roles') cache.setCache('jxcms-token', loginRes.token) } else { ElMessage({ message: '登录失败', type: 'error' }) } }}

这里我们完成第一个动态添加路由的时机,登录成功时候,进行动态路由添加。

// vuex中的根模块 index.js actions: { initializationData({ dispatch, commit }) {//vuex初始化函数 const navList = cache.getCache('jxcms-userNav') commit('changeUserNav', navList)//动态生成路由 //要用同步的 const user = cache.getCache('jxcms-user') commit('changeUser', user) } }, modules: { user, nav, dept, roles }// main.js//初始化store.dispatch('initializationData')

这里我们完成了动态生成路由的第二个时机:刷新页面时,初始化时候进行动态路由生成. 因为刷新页面时候用户可能是登录状态,这样我们就不能通过登录成功来触发动态路由添加,就需要我们主动进行动态路由生成,在初始化时候,获取到本地存储的菜单信息,如果用户没有登录,本地的菜单信息会被清除。 另外,这里我使用的是commit来提交mutations,而不是actions函数,这是因为我在测试过程中发现,如果我使用actions,那么我在进入路由页面前,路由并没有创建成功,会报错,而使用mutations,因为是同步的,所以不会出现这个情况。这个问题后面如果找到解决办法,会重新进行修改。

本文链接地址:https://www.jiuchutong.com/zhishi/300833.html 转载请保留说明!

上一篇:Three.js教程:材质效果(three.js 入门)

下一篇:使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序(使用微软必应需要哪些条件)

  • 微信朋友圈如何只发文字(微信朋友圈如何更改定位位置)

    微信朋友圈如何只发文字(微信朋友圈如何更改定位位置)

  • 共享电脑无法访问权限(共享电脑无法访问找不到网络路径)

    共享电脑无法访问权限(共享电脑无法访问找不到网络路径)

  • 共享实时位置是什么意思(共享实时位置是真的位置吗)

    共享实时位置是什么意思(共享实时位置是真的位置吗)

  • 微信不小心点了切换账号(微信不小心点了不显示该聊天怎么弄回来)

    微信不小心点了切换账号(微信不小心点了不显示该聊天怎么弄回来)

  • 大王卡怎么换普通套餐(大王卡怎么换成普通)

    大王卡怎么换普通套餐(大王卡怎么换成普通)

  • 不插内存条可以开机吗(不插内存条可以亮机吗)

    不插内存条可以开机吗(不插内存条可以亮机吗)

  • 抖音的文案怎么复制(抖音的文案怎么跑去评论区了)

    抖音的文案怎么复制(抖音的文案怎么跑去评论区了)

  • 5g手机流量消耗大吗(5g手机流量消耗太快怎么设置)

    5g手机流量消耗大吗(5g手机流量消耗太快怎么设置)

  • 手机突然发出尖锐长鸣(手机突然发出尖锐长鸣然后自动关机)

    手机突然发出尖锐长鸣(手机突然发出尖锐长鸣然后自动关机)

  • oppo手机接不到陌生电话(oppo手机接不到微信电话)

    oppo手机接不到陌生电话(oppo手机接不到微信电话)

  • 三星a90是双模5g吗(三星a90 5g是双卡双待吗)

    三星a90是双模5g吗(三星a90 5g是双卡双待吗)

  • ipadair3有耳机孔吗(新款ipadair3有耳机孔吗)

    ipadair3有耳机孔吗(新款ipadair3有耳机孔吗)

  • soul今日自闭是什么意思(soul今日自闭是不是隐身)

    soul今日自闭是什么意思(soul今日自闭是不是隐身)

  • 爱奇艺是百度的吗(爱奇艺app官方版下载)

    爱奇艺是百度的吗(爱奇艺app官方版下载)

  • 什么是现代计算机的雏形?(什么是现代计算机的原型机)

    什么是现代计算机的雏形?(什么是现代计算机的原型机)

  • 爱奇艺下载的视频在哪(爱奇艺下载的视频怎么传到u盘)

    爱奇艺下载的视频在哪(爱奇艺下载的视频怎么传到u盘)

  • 手机为什么连接不到移动网络(手机为什么连接不了家里wifi)

    手机为什么连接不到移动网络(手机为什么连接不了家里wifi)

  • pr视频怎么导出(pr视频怎么导出mp4)

    pr视频怎么导出(pr视频怎么导出mp4)

  • 怎么群发微信消息(怎么群发微信消息给好友)

    怎么群发微信消息(怎么群发微信消息给好友)

  • 华为电子保修卡在哪儿(华为电子保修卡生效时间)

    华为电子保修卡在哪儿(华为电子保修卡生效时间)

  • 抖音点赞受限多久恢复(抖音点赞受限了多长时间能好)

    抖音点赞受限多久恢复(抖音点赞受限了多长时间能好)

  • 小米6如何设置闹钟铃声(小米6如何设置老人模式)

    小米6如何设置闹钟铃声(小米6如何设置老人模式)

  • 天猫手机如何投诉卖家(天猫手机如何投屏电视)

    天猫手机如何投诉卖家(天猫手机如何投屏电视)

  • 移动固态硬盘优势(移动固态硬盘优缺点分析)

    移动固态硬盘优势(移动固态硬盘优缺点分析)

  • 10款手机赚钱软件排行,月赚10000+元的赚钱软件(10款手机赚钱软件下载)

    10款手机赚钱软件排行,月赚10000+元的赚钱软件(10款手机赚钱软件下载)

  • 先开票,后发货怎么处理
  • 公积金贷款金额少怎么办
  • 收据上面盖公章还是财务章
  • 堤围费是什么意思
  • 已认证红冲需要退回发票吗
  • 个人独资企业500万以下
  • 承兑汇票给别人时对方需要出具什么
  • 长期股权投资会减值损失吗
  • 小规模纳税人销售额
  • 暂估进项税额
  • 一般纳税人农业增值税如何申报
  • 小规模纳税人减免税收政策
  • 企业留存收益包括盈余公积和未分配利润
  • 营业执照首次年报
  • 年终奖个税筹划临界点
  • 价内税和价外税区别
  • 工程发票的备注栏
  • 为什么销售人员佣金计入合同取得成本
  • 小规模自开专票怎么交税
  • 未抵扣完的进项税计入待抵扣
  • 其他应收账款贷方表示什么意思
  • 无法查明原因的现金溢余计入什么科目?
  • 环保税计算方法和税率1.2
  • 金蝶资产减值损失取数计算公式
  • 旧机器设备出口
  • 企业从境外收回所得税
  • 质保金算合同资产
  • 计提坏账准备的比例
  • 公允价值变动损益怎么算出来的
  • 美容美发属于什么品类
  • php邮箱发送
  • 栀子花的养殖方法和注意事项茉莉花
  • 将现金存入银行,登记银行存款日记账的依据一般是
  • 房产税计税的税率可分为
  • 微信公众号实名认证怎么更改
  • emsm是什么意思
  • vue如何配置环境变量
  • Windows下php+mysql5.7配置教程
  • 固定资产改造替换
  • 生产车间领用材料的会计分录
  • php文件缓存类
  • 厂房建设包括哪些
  • 个人独资所得
  • 四联发票都需要盖章吗
  • 政府补贴进项税额处理
  • 企业招待客户收入怎么算
  • 小规模纳税人购买原材料会计分录
  • 收了对方预付款怎么打条
  • 新办企业在建期间账务处理
  • 固定资产抵账的账务处理
  • 费用分摊怎么开口说好
  • 未分配利润高怎么解释
  • 公司卖土地怎么避税
  • 委托收款商业汇票
  • mysql 判断
  • sql 行号
  • mysql8.0 主从
  • mybatis特殊字符查询出来编码了
  • mysql 5.7.11 winx64初始密码修改
  • win7怎么下载win10
  • ubuntu20.04怎么用
  • Ubuntu10.10 Zend FrameWork配置方法及helloworld显示
  • macbook快捷操作大全
  • 系统配置运行命令
  • ms office是
  • 屏幕画面颠倒
  • win8开机启动项
  • linux中怎么在文件中添加内容
  • win7 64位打开软件时显示丢失wpcap.dll的三种解决办法
  • webgl基础教程
  • c#的程序集
  • python中类怎么用
  • dns设置为网关会出现什么问题了
  • 使用jquery
  • jquery 跨域方法
  • python数据类型详解
  • 国家辽宁税务总局
  • 飞机票其他税费包括什么内容
  • 增值税申报表更正申报期限
  • 深圳宝安到揭阳大巴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设