vue3 使用addRoute动态添加路由,页面刷新就白屏解决办法

问题,通过接口动态添加路由,第一次从登录页跳转还是正常的,说明路由添加成功了,但是刷新后就白屏了,且控制台报错路由匹配不到,在项目的main.js,router和路由拦截器中添加了一大堆打印后发现,在控制台报错的时候,根本就没进入路由守卫。(具体我就不贴代码了,我添加的太多了)

要解决路由匹配不到的问题,首先我们应该拿到动态路由,但是以往在路由守卫里进行的动态路由初始化现在行不通,因为在进路由守卫之前,程序已经进行了路由匹配

首先在router文件夹下定义你处理路由数据的方法。路由守卫外先执行一遍路由初始化,注意我这里用了await,必须等接口数据处理完成

export const setupRouterHooks = async()  => {// 首先调用接口获取菜单列表并处理成需要的路由数组,addRoute添加路由也在这个方法中,这个按照各自的要求自己处理,这里就不具体贴代码了await getMenuRoute()router.beforeEach(async(to, from, next) => {if (!token) {next({ path: '/login' })} else {if (store.getters.menu.length === 0) {await getMenuRoute() }next()}})router.afterEach(to => {......})
}

然后就是挂载的时机,在main.js中的路由初始化也要修改一下,我这里是在router里写了一个方法,在main.js中调用。注意,这里也用了await,如果初始化还没完成,就已经挂载上了app也会匹配不到路由

// 在router/index.js中添加线面的方法
export const setupRouter = async (app) => {// 路由钩子函数await setupRouterHooks()app.use(router)
}
// main.js
app.use(animate)
app.use(store)
//此处一定要用await,等路由信息处理完成后再挂载
await setupRouter(app) 
app.use(VueUeditorWrap)
app.use(Vant)
app.mount('#app')

网上也有在路由拦截里用next({ …to, replace: true })替换next(),但是我这里依旧是没起作用,还死循环了,原因是路由没有匹配到,重新在进入一次路由守卫还是会重新再进入路由守卫,一直这样循环下去,所以排除了

以上是我的解决方法,仅供参考吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前缀和】【单调栈】LeetCode2281:巫师的总力量和

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 作为国王的统治者,你有一支巫师军队听你指挥。 给你一个下标从 0 开始的整数数组 strength &…

isp代理/双isp代理/数据中心代理的区别?如何选择?

本文我们来详细科普一下几种不同的代理类型:isp代理/双isp代理/数据中心代理,了解他们的区别,选择更适合自己的代理类型。 在讲述这几种代理类型之前,我们先复习一下代理大类有哪几种。 一、机房代理和非机房代理 在做代理ip选…

一文弄懂kubernetes之Service

目录 ServiceService工作流程kube-proxyuserspaceiptablesIPVS EndpointsService负载分发策略Service属性Service定义多端口Service外部服务ServiceHeadless Services Service 在 kubernetes 中,Pod 是有生命周期的,如果 Pod 重启 IP 很有可能会发生变化…

【玩转TableAgent数据智能分析】借助全球高校数据多维度分析案例,体验TableAgent如何助力用户轻松洞察数据,赋能企业高效数智化转型

目录 前言 一、TableAgent介绍及其优势? 1、会话式数据分析,所需即所得 2、私有化部署,数据安全 3、支持企业级数据分析,大规模,高性能 4、支持领域微调,专业化 5、透明化过程,审计部署 二、使用Ta…

一起免费玩XG24-EK2703A板卡开发板,还有额外奖励等你拿!

hello大家好,我是硬核王同学,今天又看到了一个适合嵌入式初学者的免费参加的活动,迫不及待地就来跟大家分享! Funpack活动是硬禾学堂联合DigiKey发起的“玩成功就全额退”活动。第一季和第二季已圆满结束,现在是第三季…

用radis扩展websockets服务

Redis可以存储会话数据,这使得不同的服务器可以共享WebSocket连接的状态。这意味着如果用户连接到服务器 A 然后重新连接到服务器 B,服务器 B 将知道现有连接。 此外,Redis 提供发布/订阅功能,使其成为向所有连接的客户端广播消息…

【Vue】动态合并行

前言: 开发中会经常使用到表格例如el-table,还会经常用到合并行或合并列,el-table提供了对应的方法,但是官方文档中的方法是固定的行数或列数,如果我们想要根据接口获取到的动态数据去合并行或合并列应该怎么实现呢&am…

Vue中的插槽和自定义指令

目录 一、插槽 1.默认插槽 2.具名插槽 3.作用域插槽 二、自定义指令 全局注册自定义指令 执行一次性初始化设置 组件vnode更新触发 局部注册自定义指令 一、插槽 父组件传递模板给子组件,子组件使用插槽声明slot元素承载分发内容出口。 1.默认插槽 父组件…

maven限制内存使用峰值/最大内存

前言 通过设置虚拟机的内存大小,达到限制maven内存使用峰值的效果 方法1:修改mvn脚本 找到mvn脚本在MAVEN_OPTS参数值添加-Xms、-Xmx参数:MAVEN_OPTS"$MAVEN_OPTS -Xms512m -Xmx512m"效果图 windows系统下修改MAVEN_OPTS参数 …

STM32CubeMX配置HAL库输入捕获

STM32CubeMX配置HAL库输入捕获 STM32的输入捕获功能可以用来测量脉冲宽度或者频率。其工作原理是,通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如 上升沿/下降沿)的时候,将当前定时器的值(TIMx_C…

Open3D点云处理简明教程

推荐:用NSDT编辑器快速搭建可编程3D场景 这是“激光雷达入门”文章的延续。 在这篇文章中,我们将查看用于处理点云的 python 库和 Open3D 数据结构,执行可视化并操作点云数据,以便进行后续的分析处理。 如果你需要快速预览3D点云…

乐理基础-抽象的速度

通过 乐理基础-情绪与速度、具体的速度、BPM-CSDN博客 知道了具体的速度怎样去确定,通过 每分钟多少拍、音符等于多少、bpm方式,来精确形容每一拍的持续时间。 抽象的速度 或者说 不精确的速度: 抽象的速度一般有两种方式: 第一种…

vue组件,指令和自定义指令

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

modbus异常错误码说明

异常错误码说明 其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或…

Fiddler抓包,怎么抓抓得好抓得快?

01.什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请求…

虾皮广告怎么做:如何在虾皮平台上进行广告投放

在虾皮(Shopee)平台上进行广告投放可以帮助您提高产品的曝光度和销量。通过有针对性的广告,您可以在虾皮平台上吸引更多的潜在买家,提高产品的可见度并增加销售机会。本文将为您介绍在虾皮平台上创建和管理广告的一些建议&#xf…

058:vue组件引用外部js的方法

第058个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Git 配置多个 SSH-Key

Git 配置多个 SSH-Key (两个都是gitee) 先看图,官网固然重要,但是不完全行(因为官网示例是一个gitee一个github),现在想是想多个都是gitee在他上面稍微更改即可 一般不对遇到这种问题&#xf…

Spring Boot 配置属性中的连字符解析

配置属性命名规则 在Spring Boot中,配置文件(如application.properties或application.yml)中的属性通常使用连字符(-)来分隔单词。这是为了遵循常见的配置命名约定,使得配置文件更易于阅读。 属性解析和松…

【vue】开发常见问题及解决方案

有一些问题不限于 Vue,还适应于其他类型的 SPA 项目。 1. 页面权限控制和登陆验证页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的。如果一个页…