原因:push是一个promise,promise需要传递成功和失败两个参数,我们的push中没有传递。
方法:this.$router.push({name:‘Search’,params:{keyword:“…”||undefined}},()=>{},()=>{})后面两项分别代表执行成功和失败的回调函数。
这种写法治标不治本,将来在别的组件中push|replace,编程式导航还是会有类似错误
push是VueRouter.prototype的一个方法,在router中的index重写该方法即可
//不懂可参考js原型链
重写push和replace方法
let originpush=VueRouter.prototype.push;
let originreplace=VueRouter.prototype.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,()=>{},()=>{});
}
}