位置: IT常识 - 正文

Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法(vue的路由跳转了,可是页面没有变化)

编辑:rootadmin
Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法

推荐整理分享Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法(vue的路由跳转了,可是页面没有变化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue路由有几种导航钩子,vue中的路由导航守卫,vue中的路由导航守卫,vue路由实现导航栏,vue路由实现导航栏,vue路由实现导航栏,vue路由跳转报错,vue路由实现导航栏,内容如对您有帮助,希望把文章链接给更多的朋友!

点击vue路由跳转,控制台报错:Avoided redundant navigation to current location: “/xxxxxx“解决方法

一、描述问题

在使用this.$router.push跳转页面时候,重复点击菜单引起路由重复报错

比如当前页面显示区是路由组件‘/cats’,重复点击按钮进行this.$router.push跳转,要跳转的组件仍然是‘/cats’,那么控制就会报如下错误:

二、报错原因Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法(vue的路由跳转了,可是页面没有变化)

由于 vue-router3.0 及以上版本回调形式改成Promise API的形式了,返回的是一个Promise 。也是说 push和replace都是Promise类型了。

而Promise的回调函数resolve和reject,必须传其中一个,否则会报错。如果路由地址跳转相同,且没有捕获到错误,控制台始终会出现上图所出现的问题。​

三、解决方法1、安装vue-router3.0以下版本

先卸载3.0以上版本然后再安装旧版本

npm i @vue-router2.8.02、为每一个Promise添加一个回调函数

缺点:每个路由跳转都要添加回调函数

this.$router.push({ name: 'Cats', }, () => {})3、修改VueRouter原型对象上的push/replace方法

在router/index.js文件中添加如下代码

// 获取原型对象push函数const originalPush = VueRouter.prototype.push// 获取原型对象replace函数const originalReplace = VueRouter.prototype.replace// 修改原型对象中的push函数VueRouter.prototype.push = function push(location){return originalPush.call(this , location).catch(err=>err)}// 修改原型对象中的replace函数VueRouter.prototype.replace = function replace(location){return originalReplace.call(this , location).catch(err=>err)}四、原理分析const originalReplace = VueRouter.prototype.replaceVueRouter.prototype.replace = function replace(location){return originalReplace.call(this , location).catch(err=>err)}

location :一个保存了当前要跳转路径的对象;

call()函数:可以在调用函数的同时改变this的指向,常用于实现继承, 两个参数: this:由于call处于原型对象内部,所以此处this指向的是当前VueRouter的实例对象;而originalPush指向的是VueRouter.prototype.push,旨在于调用当前VueRouter实例对象中的push方法; location:在方法调用时传入获取到的location。

catch:链式调用catch方法,目的是在方法执行时,捕获错误。 在js机制中,catch捕获到Exception时,代码还会继续向下执行。所以此处的catch未作任何操作,代码也会继续向下执行,和抛给浏览器的错误其实时一致的

五、额外补充1、路由导航方式
本文链接地址:https://www.jiuchutong.com/zhishi/299654.html 转载请保留说明!

上一篇:使用Python批量旋转,镜像图片(python 批量)

下一篇:20230420-上海广策信息技术笔试记录(上海广为)

  • 无票收入小规模怎么报增值税
  • 个税汇算清缴可以修改收入吗
  • 企业所得税不得扣除的税金
  • 关税完税价格是到岸价吗
  • 企业所得税季度申报时间
  • 可以抵扣的进项税额计入什么科目
  • 税金及附加怎么登账
  • 个人独资企业有股权吗
  • 车辆购置税账务怎么处理流程
  • 出口专用发票应在哪里开
  • 个人独资企业变更投资人要交税吗
  • 流动负债是总负债吗
  • 开票软件服务费不交会怎么样
  • 年报怎么看
  • 上海航交所官网
  • 银行回单手续费怎么找到对应金额
  • 其他综合收益影响递延所得税负债吗
  • 财产租赁所得适用什么税率
  • 加速折旧法主要包括哪些内容
  • 不同行业的单位名称
  • 维修车间人员的工作总结
  • 银行手续费可以汇总记账吗
  • 定期存款计入什么科目
  • 小规模手撕发票申报填在哪
  • 研发费加计扣除做账务处理吗
  • 货物赔偿款会计分录
  • mac怎么禁止开机启动
  • win11开机后
  • mac系统怎么更改输入法
  • 增值税开票系统客服电话
  • 补助是按基本工资还是总工资
  • 外贸企业国内运费可以抵扣吗
  • linux和windows关系
  • php怎么学
  • 卡洛里山脉
  • 专项应付款费用化
  • web前端期末大作业源代码
  • php抽奖程序源码
  • 金蝶利息收入结转怎么弄
  • meta最新模型
  • 网络用语屠夫
  • vue destroyed销毁组件
  • python3 argparse
  • 待抵扣进项税额和进项税额的区别
  • 退货款现金流量表填什么?
  • vue3.0用法
  • 核定征收企业注册
  • 母公司给子公司借款要利息吗
  • 公司全部股权转让流程
  • 有留抵税额可以注销吗
  • 税控盘百科
  • 什么内容的发票可以报销
  • 以公允价值计量计入其他综合收益
  • 营业外收入需要缴纳印花税吗
  • 服务业 费用可以暂估吗?
  • 生产成本可以结转到主营业务成本吗
  • 教育费附加减免性质代码
  • 不能计入固定资产原值的有
  • 厂房测量费怎么做账
  • 财务会计应收票据
  • 在建工程中的业务招待费转无形资产后所得税如何处理
  • 高新技术产品收入归集依据
  • 一季度存款
  • 项目过路费应该挂什么科目
  • 数据库查询排名
  • 使用http_load来给Linux系统的服务器做压力测试
  • win7系统硬盘安装版
  • .ccc是什么文件
  • macbookair网页全屏
  • 如何使用windows 10
  • centos 修改网络配置文件
  • git连接linux服务器
  • windows7网络和internet设置
  • 安卓游戏模拟游戏制作
  • javascript零基础学要学多久
  • pythonjam怎么用
  • javascript初级教程
  • python编程完全入门教程
  • 税控盘开票资料怎么导出几年前的开票信息
  • 个人绩效考核税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设