问题:
使用高版本 Vue-router,当执行当前路由的点击事件时,会报错:
Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/login".
比如,如果当前路径是 ‘/login’,切换路径也是 ‘/login’,使用 router-link
不会报错,而使用 js 切换 this.$router.puth()
就会报错。
报错图片:
报错代码:
login: function () {
this.$router.push({
name: 'Login'
});
解决方法:
在 vue 中添加配置:
const VueRouterPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch(err => err)
};
报错版本:(高版本)
<script src="https://cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script>
不报错版本:(低版本)
<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>```