Vue Router 最新版惊现使用 BUG

这篇具有很好参考价值的文章主要介绍了Vue Router 最新版惊现使用 BUG。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

就在刚刚,当我在 写 Vue3 的项目的时候,使用到了 Vue Router 4 的最新版本(4.1.6),然而在使用过程中,发现了一个使用问题,起初我还以为,是我这边的代码逻辑有问题,然而在反复查看,以及配合 Vue 官方开发插件,检测后,我发现这是 Vue Router 自身出现的问题(目前的结论)。
Vue Router 最新版惊现使用 BUG
下面,我就来给大家描述一下,到底是什么样的 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 路径地址是我正常登录后的地址,但是当我清除本地后数据后,想通过路由守卫,将导航路径地址重定向到首页登录页面。
Vue Router 最新版惊现使用 BUG
重定向到首页根目录后,到这里也还是正常的,接下来,当我,通过浏览器上的箭头,回退到上一个路径页面的时候,

Vue Router 最新版惊现使用 BUG
路由守卫 依然监听到了,路由的触发。

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

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

Vue Router 最新版惊现使用 BUG

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

Vue Router 最新版惊现使用 BUG

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


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

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

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

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

Vue Router 最新版惊现使用 BUG


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


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

到了这里,关于Vue Router 最新版惊现使用 BUG的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【2023最新版】DataGrip使用MySQL教程

    目录  一、安装MySQL 二、安装DataGrip 三、DataGrip使用MySQL 1. 新建项目 2. DataGrip连接MySQL 下载驱动文件 填写root+密码 测试 成功 3. DataGrip操作MySQL 四、MySQL常用命令 1. 登录 2. 帮助 3. 查询所有数据库         MySQL是一种开源的关系型数据库管理系统(RDBMS),它是最流行和广泛

    2024年02月09日
    浏览(73)
  • 不用订阅,不用破解,永久免费使用Axure最新版教程

    首先去官网下载最新的axure,你没听错,就是最新的。 下载网址:Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 下载完后解压安装到本地,并注册属于你自己的账户,开始试用。可惜的是只有30天的试用日期。 本次永久使用axure的方法就是修改axure的启动时间,以达到永

    2024年02月10日
    浏览(39)
  • mathtype7.0最新版安装下载及使用教程

    MathType是一款专业的数学公式编辑器,理科生专用的必备工具,可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。2014年11月,Design Science将MathType升级到MathType 6.9版本。在苏州苏杰思网络有限公司与Design Science公司的共同努力下,2015年3月,

    2024年02月03日
    浏览(55)
  • 2023最新版Python 3.12.0安装使用指南

    Python is a programming language that lets you work quickly and integrate systems more effectively. - www.python.org 要进行Python软件开发,首先要安装Python软件包。 本文简要介绍的Python 3最新版3.12.0的安装过程,希望对您有所帮助。 首先,访问Python官网:https://www.python.org 在主页上方导航栏,选择 Do

    2024年02月08日
    浏览(52)
  • 【Android】最新版Android13使用Notification,Notification的基本使用和进阶使用

    1.1 注册一个渠道 在Android13,版本通知的使用发生了新的变化。 1.1.1 NotificationManager原生类 首先我们需要创建一个 NotificationManager 用于管理通知。 NotificationManager 仅支持在 API 等级 11(Android 3.0)及以上的设备上使用 ,因此在较旧的 Android 版本上无法使用较新的通知功能。 `

    2024年01月17日
    浏览(42)
  • npm淘宝镜像cnpm安装使用(最新版),cnpm临时单次/永久使用

    npm 全称 Node Package Manager ,是 node.js 的模块依赖管理工具。由于 npm 的源在国外,所以国内用户使用起来各种不方便,可能会出现无法访问,发生异常,或者下载缓慢等问题。为此,淘宝搭建了 cnpm(中国 npm 镜像的客户端),它是一个完整的 npmjs.org 镜像,你可以用此代替官方

    2023年04月18日
    浏览(58)
  • Selenium最新版谷歌浏览器驱动的下载及使用

    首先需要在Google浏览器设置里的关于Chrome中查看Google浏览器的版本: 再在接下来的链接中找到对应的版本,一般大版本对应就行,即117.0.5938.63中的117对应即可 https://googlechromelabs.github.io/chrome-for-testing/ 以上链接提供了最新版本的Google驱动器,如果需要Other Versions,可前往:

    2024年02月08日
    浏览(75)
  • 使用ChatGPT最新版实现批量写作,打造丰富多彩的聚合文章

    随着人工智能的迅猛发展,ChatGPT最新版作为一种自然语言处理模型,可以为我们提供强大的文本生成能力。在这篇文章中,我们将探讨如何利用ChatGPT最新版来实现批量写作,从而打造丰富多彩的聚合文章。 一、ChatGPT最新版简介 ChatGPT最新版是由OpenAI开发的一种基于大规模预

    2024年02月09日
    浏览(50)
  • CleanMyMac最新版4.14Mac清理软件下载安装使用教程

    苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那么,苹果电脑会自动清理垃圾吗?苹果电脑系统垃圾

    2024年02月10日
    浏览(63)
  • 记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试

    Eazfuscator.NET 是用于.NET平台的工业级混淆器。 Eazfuscator.NET 提供的混淆保护了软件中根深蒂固的知识产权,提高了商业盈利能力,并保持了竞争优势。 Eazfuscator.NET 很简单,就像 1-2-3 一样: 它可以保护您的代码, 而不会破坏它 -  即使在最复杂的情况下  - 我们已经处理了它

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包