这个报错本来不影响功能,可以不理睬。但看到报错心痒痒;
解决方法如下:
简单粗暴 方法一:传递成功回调和失败回调
this.$router.push({
name:'search',
params:{keyword:this.keyword||undefined},
query:{k:this.keyword.toUpperCase()}
},()=>{},()=>{})
//成功回调和失败回调,解决多次点击报错问题
一劳永逸 方法二:基于方法一思想,重写一下 push 和 replace,不用每次都传递两个“()=>{}”
//路由配置文件
import Vue from 'vue';
import VueRouter from 'vue-router';
//使用VueRouter插件
Vue.use(VueRouter);
//先保存一份VueRouter
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
//重写push|replace
//第一个参数:往哪里跳(传递哪些参数)
VueRouter.prototype.push = function(location,resolve,reject) {
if(resolve && reject) {
originPush.call(this,location,resolve,reject);
} else {
originPush.call(this,location,()=>{},()=>{});
}
}
VueRouter.prototype.replace = function(location,resolve,reject) {
if(resolve && reject) {
originReplace.call(this,location,resolve,reject);
} else {
originReplace.call(this,location,()=>{},()=>{});
}
}
//下面就可以开始写理由配置了
//路由配置
export default new VueRouter({
routes:[
{
}
]
}
/**
* call 和 apply 区别
* 相同点:都可以调用函数一次,都可以篡改函数的上下文一次
* 不同点:call与app传递参数用逗号隔开,apply方法执行,传递数组
*/