Vue Router 最新版惊现使用 BUG

news2024/11/15 8:24:13

就在刚刚,当我在 写 Vue3 的项目的时候,使用到了 Vue Router 4 的最新版本(4.1.6),然而在使用过程中,发现了一个使用问题,起初我还以为,是我这边的代码逻辑有问题,然而在反复查看,以及配合 Vue 官方开发插件,检测后,我发现这是 Vue Router 自身出现的问题(目前的结论)。
在这里插入图片描述
下面,我就来给大家描述一下,到底是什么样的 BUG,以及分享一下,我核对检测bug的流程方法。

首先得出的BUG结论: router.beforeEach ,路由守卫中,第三个参数 next(),重定向路由地址后,并没有 终止 原有导航路径的执行。


首先,我本想是通过配置一个路由守卫,用来监测用户的登录的状态。

    router.beforeEach((to, from, next) => {
        let usersttate = JSON.parse(sessionStorage.getItem("userId"));
        if (usersttate) {
            next()
        } else {
            if (to.name == "Loginhome" || to.path == "/") {
                next()
            } else {
                ElMessage({
                    type: "warning",
                    message: "登录已失效,请重新登录"
                })
                next({ path: '/', replace: true });
            }
        }
    })

/PageStructure/teacher 路径地址是我正常登录后的地址,但是当我清除本地后数据后,想通过路由守卫,将导航路径地址重定向到首页登录页面。
在这里插入图片描述
重定向到首页根目录后,到这里也还是正常的,接下来,当我,通过浏览器上的箭头,回退到上一个路径页面的时候,

在这里插入图片描述
路由守卫 依然监听到了,路由的触发。

在这里插入图片描述
当我回退页面路径的时候,由于本地数据的判断条件不成立,所以继续触发了 next({ path: '/', replace: true });对路径,再次重定向,简单按理说就是,当我第一次,从登录状态中退出到首页后,在没有重新登录状态下,就算再次通过,浏览器的箭头,也无法回退到上一个页面才对。
在这里插入图片描述

可是这时候,浏览器的地址栏路径却依然可以回退到上一个页面,但是页面还停留在首页,没什么变化。

在这里插入图片描述

然后,如下图,我们立即在当前页面,从router 实例身上获取当前页面路径地址,却发现,实例中的路径,依然还是当前首页的根路径地址。结合上面提到的,概括总结就是,我们回退的路径地址执行了,但是路由实例身上依然保留的是页面的当前地址,造成了实际地址栏地址,与 路由实例当前页面的地址,不匹配,不同步现象。

在这里插入图片描述

为了更直观的给大家看出问题,我们来用Vue 开发工具查看,图中,绿色方块 exact,停留在哪个路由上,就代表当前面页面对应的哪个路由地址。这里图中路径与页面的对应关系,采用的是普通的路由跳转模式,所以没什么问题。
在这里插入图片描述


问题来了
注意看,这里就直观的表现出了问题,我对除首页外,没有登录状态的所有页面路由地址,均采用了路由守卫 next() 重定向到首页路由地址后,浏览器路径地址栏依然是继续执行改变了,但是开发工具中的,路由的映射依然停留在了当前的页面地址。
在这里插入图片描述

不知道上面的描述过程,大家看出来了没有,只有在 路由守卫中 采用 next() 重定向后的路径地址,才会出现不匹配的现象,同时我为什么会说,这是一个bug 呢?

因为在官方文档中,提到了,如果 通过 next 重定向了路径,则会终止原来路径地址的导航,可根据,上述我发现的情况来看,这一点 似乎是 失效了,一句话概括就是说:重定向地址后,本该中断执行的原地址,如今并没有没被中断执行导致 浏览器地址栏地址,依然有效,路由实例上的路径地址却与之不相同步匹配的现象

同时在之前,低一些的 Vue Router 版本使用中,面对到同样的业务需求时,并没有出现这个问题。

在这里插入图片描述


这个问题也是24 小时内刚刚发现的,所以我连夜输出一篇文章用做记录一下,至于这个问题产生的具体原因,我这边目前暂时排除了,我项目代码的问题,所以我这边暂且把它归置为 Vue Router 的 bug 问题,如果有遇到同样问题的或者知道,这个问题原因的小伙伴,欢迎评论区讨论分享。


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

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

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

相关文章

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,运行速度提…

【Java笔试强训 33】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥剪花布条…

虹科新闻 | HKATTO推出FastFrame™ 第四代智能以太网适配器系列

ATTO Technology, Inc. 是 35 多年来为数据密集型计算环境提供网络、存储连接和基础设施解决方案的全球领导者,今天宣布推出其新的FastFrame™ 第四代以太网产品系列智能网卡。 第四代FastFrame SmartNICs 产品线具有四种独特的型号,产品线涵盖 10/25/40…

OmniVerse + ChatGPT = 智能3D建模

全球各行各业对 3D 世界和虚拟环境的需求呈指数级增长。 3D 工作流是工业数字化的核心,开发实时模拟以测试和验证自动驾驶汽车和机器人,运行数字孪生以优化工业制造,并为科学发现铺平新道路。 今天,3D 设计和世界构建仍然是高度手…

IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站

​ IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站 什么是隔离器,它与断路器有何不同 什么是隔离器,为什么要使用隔离器 隔离器是一种开关装置,它可以手动或自动操作,隔离一部分电能。隔离器可用于在无负载情…

Python 实验四 常用数据结构(2)

6.某企业为职工发放奖金:如果入职超过5年,且销售业绩超过15000元的员工,奖金比例为0.2;销售业绩超过10000元的员工,奖金比例为0.15;销售业绩超过5000元的员工,奖金比例为0.1;其他奖金…

【25】核心易中期刊推荐——智能控制机器人

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

【PWN · ret2libc】ret2libc2

ret2libc1的略微进阶——存在systemplt但是不存在“/bin/sh”怎么办? 目录 前言 python3 ELF 查看文件信息 strings 查看寻找"/bin/sh" IDA反汇编分析 思路及实现 老规矩,偏移量 offset EXP编写 总结 前言 经过ret2libc1的洗礼&a…

MyBatis介绍和MyBatis的增删改查xml配置--日志输出-查看 SQL

目录 MyBatis(简化数据库操作的持久层 框架) 官方文档 Maven 仓库 传统的 Java 程序操作 DB 分析 工作示意图 传统方式问题分析(如上) 引出 MyBatis MyBatis 工作原理示意图 MyBatis 快速入门 快速入门需求说明 创建 mybatis 数据库 - monster 表 MyBatis 快速入门 …

【需求响应】基于进化算法的住宅光伏电池系统需求响应研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

VirtualBox 安装ubuntu22.04-live-server版本

文章目录 一、安装过程二、启动过程三、测试网络连通四、设置共享文件夹 一、安装过程 1、新建一个虚拟机 2、设置名称和位置 3、设置内存大小 4、设置虚拟硬盘,选择现在创建虚拟硬盘 5、选择虚拟硬盘文件类型,这里选择VDI 6、选择存储方式&#x…

甘特图控件DHTMLX Gantt入门使用教程【引入】:dhtmlxGantt 与 ASP.NET MVC(下)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

2023爱分析・可观测性平台市场厂商评估报告:乘云科技

1. 研究范围定义 IT运维是企业信息化建设中不可或缺的一环,其作用在于确保系统稳定性、提高效率和降低成本,对企业的业务生产和服务质量有着至关重要的影响。自十四五规划以来,随着企业数字化转型的加速推进,以及信创转型的大…

Spring IoC 深度学习

Io回顾 IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Jav…

【代码随想录】刷题Day21

1.二叉搜索树的最小绝对值 530. 二叉搜索树的最小绝对差 首先对于单个节点而言,其最小绝对值有两个可能 一是根节点和左节点的最右节点绝对值 二是根节点和右节点的最左节点绝对值 其实这俩条件的实现就是我们代码的关键,不过这题和二叉搜索树的判断殊途…

Es分布式搜索引擎

目录 一、什么是ES? 二、什么是elk? 三、什么是倒排索引? 四、正向索引和倒排索引的优缺点对比 五、mysql数据库和es的区别? 六、索引库(es中的数据库表)操作有哪些? 八、ES分片存储原理 …

AutoCV第七课:ML基础

目录 ML基础前言1. 复习sqrt函数2. 线性回归预测房价2.1 问题分析2.2 代码实现2.3 总结 个人总结 ML基础 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程,链接。记录下个人学习笔记,仅供自己参考。 本次课程主要学习复习 sqrt 函数和线性回归预测房…

Java开发手册-8

Java开发手册-8 MySQL 数据库SQL语句ORM映射 工程结构应用分层二方库依赖 MySQL 数据库 SQL语句 【强制】不要使用count(列名)或count(常量)来替代count(*),count(*)是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。 说…

深入了解云计算:发展历程、服务与部署模型、未来趋势与挑战

开篇博主 bluetata 的观点:PaaS 服务必将是未来10年云计算权重最高的趋势(05/02/2023 15:32) 文章目录 一、前言二、认识了解云计算2.1 什么是云计算2.1.1 维基百科上的云计算定义2.1.2 NIST 标准云计算定义2.1.3 如果被面试如何解释云计算 2…

177_模型_Power BI 进销存6大日期维度期初与期末

177_模型_Power BI 进销存6大日期维度期初与期末 一、背景 在经销存报表设计中,经常会遇到的便是期初与期末。当然我们这里说期初与期末指的是期初库存与期末库存。 这里的期一般常见的会有:年月日。本案例将演示 6 大日期维度,分别是&…