$router.options.routes取不到全部路由
最近在看老项目的路由逻辑
项目使用constantRoutes和asyncRoutes分别代表基本路由和动态路由。createRouter时,传入的routes参数只有基本路由
在路由导航守卫中,判断用户权限生成动态路由,通过router.addRoutes方法将动态路由添加到路由中
但是我发现router.addRoutes之后,打印$router.options.routes,打印出来的并不是全量的路由,仍然只有基本路由(虽然打印不出来,但是不影响使用,页面跳转没有任何问题)
查了下项目里的路由逻辑没有问题,那原因可能就在vue-router上了
查看node_modules中vue-router源码,发现router.addRoutes方法中,只给matcher对象增加了新路由,并没有更新router.option
matcher对象是给vue-router内部使用的,所以项目里页面跳转没有出问题,但router.option打印不出来
我本地项目中vue-router是3.0.6版本
查看vue-router当前最新版本,3.5.4版本的源码,发现vue官方新增了getRoutes方法,用于获取matcher对象上的全量路由
$router.options.routes取不到全部路由的解决方法
方法一,vue-router更新到3.5.0版本以上,使用getRoutes方法获取
方法二,使用状态管理工具,自行保存一份路由数据
随机推荐
- String,StringBuffer、StringBuilder的区别
1.可变性 String:是不可变的.其内部是fianl修饰的,每次变更都会创建一个新的对象. StringBuffer.StringBuilder是可变的,字符串的变更是不会创建新对象的. 2.线程 ...
- 终于搞全了:GPIO/ADC/LED/I2C/SPI/USB…
合宙低功耗4G模组经典型号Air780E,支持两种软件开发方式: 一种是传统的AT指令:一种是基于模组做Open开发. 传统AT指令的开发方式,合宙模组与行业内其它模组品牌在软件上区别不大,在硬件功耗 ...
- po文件如何转为excel
其实.po文件是一种翻译文件格式,类似于 key - value的列表 可以理解为两列,由于我们想把这个po数据读出来放入 excel.因为大部分人看不懂po文件的.虽然我们可以借助工具 poedit ...
- 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)
ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. 这篇文章介绍的常见面试题是关于重载(overloading)方法和重写( ...
- Java 并发编程实战学习笔记——串行任务转并行任务
package net.jcip.examples; import java.util.Collection; import java.util.List; import java.util.Queu ...
- Clickhouse之集群操作
查看集群: 在任意一台机上,使用 /usr/bin/clickhouse-client --host localhost --port 9000 连接本地服务器 select * from `syst ...
- Ubuntu默认启动到字符界面
修改/etc/default/grub sudo cp /etc/default/grub /etc/default/grub.bak sudo chmod 0777 /etc/default/gru ...
- github访问不了解决方法
github突然无法访问,解决办法如下-迷恋自留地 首先通过网址https://tool.chinaz.com/dns?type=a&host=github.com 修改hosts文件,win ...
- element-ui el-dialog中套el-dialog被遮罩遮盖的问题
添加 append-to-body 属性 具体见官方文档 入口
- 从FTP到Feem:文件传输技术的革新
Feem是一个开源的文件传输协议,旨在提供高效.安全.快速的文件传输服务.与传统的FTP和HTTP协议相比,Feem具有许多优势,如支持任意大小的文件传输.支持实时传输和断点续传等. Feem_v4. ...