Vue路由 $router.push 跳转点击两次报错
Vue路由$router.push跳转点击两次报错
错误说明:
vue项目中,如果使用$router.push跳转到一个相同的路由,就会报错:
原因:
vue-router
在3.1.0版本之后,push和replace方法会返回一个promise对象,如果跳转到相同的路由,就报promise uncaught
异常。
解决办法:
1.降版本
使用vue-router 3.1.0之前的版本就不会有这个错误。
2.使用catch捕获异常
在使用push或者replace的时候,需要使用catch来处理异常
this.$router.push('/login').catch(err => {})
3.全局修改push方法
在router/index.js
文件中进行全局的处理
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const originalPush = VueRouter.prototype.push
// 重写原型上的push方法,统一处理错误信息
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}