增城区建设局网站,小程序线上商城,国际时事新闻最新,创易网络重写push与replace方法
编程式导航路由跳转到当前路由#xff08;参数不变#xff09;#xff0c;多次执行会抛出NavigatorDuplicated的禁告错误#xff1f;
路由跳转有俩种形式#xff1a;声明式导航#xff0c;编程式导航
声明式导航没有这类问题的#xff0c;因为…重写push与replace方法
编程式导航路由跳转到当前路由参数不变多次执行会抛出NavigatorDuplicated的禁告错误
路由跳转有俩种形式声明式导航编程式导航
声明式导航没有这类问题的因为vue-router底层已经处理好了 为什么编程式导航进行路由跳转的时候就会有这警告 最新的vue-router引入promise。而promise对象我们需要传入一个成功或失败 回调 通过push传递响应的成功失败回调函数可以捕获到当前的错误可以解决
let resultthis.$router.push({name:search,params:{keyword:this.keyword},query:{k:this.keyword.toUpperCase()}},(){},(){})
这种写法治标不治本将来在别的组件当中push|replace编程式导航还是有类似的错误。
为什么
this 当前组件的实例search
this.$router属性 当前的这个属性属性值VueRouter类型的一个实例当在入口文件注册路由的时候给组件实例添加$router|$route属性
push:VueRouter类的一个实例
而这个上下文对象就是VueRouter类的实例而我们想要解决这个问题就需要重写push方法 这样不管你传了还是没有传都没有问题了