在使用 router.addRoutes动态添加路由后,需要手动添加next({ ...to, replace: true })进行重定向重新加载才可以识别到新添加的路由。
但是由于next({ ...to, replace: true })中的to解构,会导致当前路由和前一个路由不一致,vue会抛出重定向的错误。
解决方案:
在router/index.js中添加如下代码 (推荐)
const routerPush = Router.prototype.push
Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(error => error)
}
Vue.use(Router)
第二种解决方案(不推荐,但也有用)
在要跳转之前 添加.catch监听,只需要监听vue即将抛出的路由异常,vue就不会主动在控制再抛红色错误
this.$router.push('/').catch(()=>{})
网友评论