[Vue warn]: Error in v-on handler (Promise/async): “NavigationDuplicated: Navigating to current loca

场景

  运用编程式路由导航,处在当前路由状态下,进行二次跳转(一直点击同一个按钮)时会报错 [Vue warn]: Error in v-on handler (Promise/async): "NavigationDuplicated: Navigating to current loca
在这里插入图片描述

解决办法

  1. 使用onComplete()、onAbort()
this.$router.push({ path:/XXX},onComplete => {},onAbort => {})

  push和replace中提供onComplete和onAbort回调作为第二和第三个参数。这些回调将会在导航成完成(所有钩子函数被解析之后)或终止(导航到相同的路由、或当前路由完成之前的路由跳到不同路由)的时候进行相应的调用。
  官网具体介绍 如果问题还没有解决,则需要封装router.js

  1. 封装router.js
    在router.js中添加如下代码:
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
} 

  如果修改了push还是没有生效,那么可以尝试replace方法,例如:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const originalPush = Router.prototype.replace
Router.prototype.push = function replace(location) {
  return originalPush.call(this, location).catch(err => err)
}

结束

  改bug或许最开心的时刻就是找到并解决了,哈哈哈,继续码代码了
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值