从根本上解决 Vue 报错:Error: Navigation cancelled from "/" to "/login" with a new navigation

发布于 2023-06-23 15:42:01 字数 936 浏览 39 评论 0

查阅网上的文章,一致认为这个错误是 vue-router 内部错误,没有进行 catch 处理,导致的编程式导航跳转问题,往同一地址跳转时会报错的情况。push 和 replace 都会导致这个情况的发生。

提供的解决方法是重写这两个方法:

我试过,不太好用,返回出现更多的其他错误,得不偿失。

既然我们发现了问题,其根本原因是重复跳转,这种情况一般都是鉴权的地方出现,而且并不多,因为我们都是使用路由卫士来鉴权的,解决了重复跳转就基本解决了这个问题了。


我的解决方法

在 window 上定义一个变量 window.toLogging​ ,用于表示当前是否正在跳转到 登录页面,如果为正在跳转,就设置为 true,所有需要跳转到登录页面的地方都添加判断,如果 window.toLogging​ 为 true,就不执行任何操作,如果是 false ,先把 window.toLogging​ 修改为 true,在执行跳转操作。

this.checkUser(res => {
  if (!res.success && !window.toLogging) {
    window.toLogging = true;
    this.$router.replace('login');
  }
});

在登录页面将这个变量复位设置为 false,这样就从根本上解决了这个报错。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文