亲测解决 :Navigation cancelled from “xxx“ to “xxx“ with a new navigation

亲测解决 :Navigation cancelled from “xxx“ to “xxx“ with a new navigation使用vue3.0写了一个登入页面,再点击登入的时候,第一次点击会没有反应,F12查看接口都调用了但是没有跳转,控制台打印出错:错误说有异常没有捕获;这个错误是vue-router内部的错误,没有进行catch处理导致的;再vue-router3.0以上的版本新增功能:push和replace方法会返回一个promise;解决方案:在vue的router的js中添加下面代码constoriginalPush=VueRouter.prototype.pushconstorigin

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

使用vue 3.0 写了一个登入页面,再点击登入的时候,第一次点击会没有反应,F12查看接口都调用了但是没有跳转,控制台打印出错:
亲测解决 :Navigation cancelled from “xxx“ to “xxx“ with a new navigation

错误说有异常没有捕获;

这个错误是vue -router 内部的错误,没有进行catch处理导致的;

再vue-router3.0以上的版本新增功能:push和replace方法会返回一个promise;

解决方案:

在vue的router的js中添加下面代码

const originalPush = VueRouter.prototype.push
const originalReplace = VueRouter.prototype.replace
// push
VueRouter.prototype.push = function push (location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}
// replace
VueRouter.prototype.replace = function push (location, onResolve, onReject) {
  if (onResolve || onReject) return originalReplace.call(this, location, onResolve, onReject)
  return originalReplace.call(this, location).catch(err => err)
}

其中VueRouter是在vue初始化的时候引入的Router,完整代码:router/index.js

import VueRouter from 'vue-router'

Vue.use(VueRouter);
// 解决报错
const originalPush = VueRouter.prototype.push
const originalReplace = VueRouter.prototype.replace
// push
VueRouter.prototype.push = function push (location, onResolve, onReject) {
    console.log(onReject + onResolve)
  // if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => {
      console.log(err)
      originalPush.call(this, location, onResolve, onReject)
  });
}
// replace
VueRouter.prototype.replace = function push (location, onResolve, onReject) {
    console.log(onReject + onResolve)
  // if (onResolve || onReject) return originalReplace.call(this, location, onResolve, onReject)
  return originalReplace.call(this, location).catch(err => {
      console.log(err)
      originalPush.call(this, location, onResolve, onReject)
  })
}

.......

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158918.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • re模块和正则表达式[通俗易懂]

    正则表达式序言在如今这个网络横行的时代,网络对我们的生活起着举足轻重的作用,在我们日常生活中是随处可见的:坐车买票,日常生活物品的购买,医院就医。。。。在我们网上购物的时候会进入登陆界面进行一系列

    2022年3月29日
    35
  • pycharm的python环境配置_怎么安装pycharm及环境变量配置

    pycharm的python环境配置_怎么安装pycharm及环境变量配置1.python安装(目前我用的是Anaconda环境,够用,等遇到问题没办法了再装python,然后再写这部分内容。看到这的朋友要谨慎些,别被我误导了)2.Pycharm环境变量配置点击createnewproject进入项目配置页面:或者:即:Pycharm自动加载的环境为虚拟环境,不建议初学者使用,因为后期很多安装的模块和包只能在虚拟环境中使用。点击上图编号3之后会进入下图显示的内容,我们选择左侧systeminterpreter,在显示的路径中…

    2022年8月29日
    0
  • C语言中的结构体,结构体中数组初始化与赋值

    C语言中的结构体,结构体中数组初始化与赋值原作地址:https://www.cnblogs.com/zhangfeionline/p/5913905.html最近写c语言中的结构体遇到了些问题,从网上找了些资料如下:结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里暂不讨论;1.结构体的定义和赋值结构体是可以直接初始化的,在定义的时候,就可

    2022年7月18日
    10
  • clientwidth_JavaScript中的clientWidth和clientHeight[通俗易懂]

    clientwidth_JavaScript中的clientWidth和clientHeight[通俗易懂]clientwidthUsingclientWidthandclientHeightyou’reabletogetthepixeldimensionsofanHTMLelement.ThedimensionsarecalculatedusingthedimensionsofcontentinsidetheHTMLelement,alongw…

    2022年7月22日
    8
  • nginx性能优化面试题_nginx高并发优化

    nginx性能优化面试题_nginx高并发优化nginx的优化1.gzip压缩优化2.expires缓存有还3.网络IO事件模型优化4.隐藏软件名称和版本号5.防盗链优化6.禁止恶意域名解析7.禁止通过IP地址访问网站8.HTTP请求方法优化9.防DOS攻击单IP并发连接的控制,与连接速率控制10.严格设置web站点目录的权限11….

    2022年8月27日
    3
  • 利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装—免额外安装CUDA和cudnn(适合小白的保姆级教学)[通俗易懂]

    利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装—免额外安装CUDA和cudnn(适合小白的保姆级教学)[通俗易懂]一、英伟达驱动安装与更新显卡驱动程序就是用来驱动显卡的程序,它是硬件所对应的软件。驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。正常有显卡的电脑都是有驱动程序的,但是有的时候驱动可能版本比较低,支持的cuda版本也是比较低的(但是有的人的显卡是比较老的,就不建议更新驱动,这样会导致各种各样的问题,但是搞深度学习还是要用一块好的显卡用来学习,这点我是有血泪教训的,咬咬牙买块好的显卡,把知识学到手,以后的工资可以多赚会很多显卡的钱),英伟达出的30系列的显卡好像只支持cu…

    2022年6月6日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号