当使用 this.$router.push() 进行路由跳转的时候,当第一次使用路由跳转的时候是不会出现这个问题的,但是当你再一次跳转到这页面的时候且参数的数据也没有发生改变,就会报这个错误。
虽然这个报错没有影响到程序的正常运行,但是这个问题的话也是不难解决的。我这里就是主要提供了三种方案。
第一种方案:在路由跳转的里面加上一个成功的回调函数
this.$router.push({},()=>{})
第二种方案:使用 catch 捕获错误的 promise
this.$router.push({}).catch(()=>{})
this.$router.push() 该放啥还是放啥,在后面多加一个成功的回调或者捕获失败的的回调就可以很好的解决这个问题了,但是第一种和第二种方案都是针对某一个路由跳转的,其他的路由跳转要是也想实现这个功能的话虽然说加上去就行了,但是会增加很多的代码量,所以就有了第三种方案。
第三种方案:重写原型链上的push方法
// 缓存原来的 push 方法
const originalPush = VueRouter.prototype.push
//指定新的push方法
VueRouter.prototype.push = function (location, onResolve, onReject) {