Uncaught (in promise) Error: Redirected when going from "????" to "????" via a navigation guard.
router 3.5.0+ 会有这个问题,在不降低版本的情况下,不修改发布elementUI 也能解决。具体原因参加router源码hooks部分的 to 验证
前提:
【1】不降低router版本
【2】不构建与发布私有elementUI
【3】不修改vue-router ,只针对单个项目固定版本的elementUI
### 解决:
在main.js里
import {
Menu
} from 'element-ui';
重写 Menu的 handleItemClick 方法 , 具体代码如下,至于想如何处理,看自己系统业务,这里只提供基础的解决办法。
Menu.methods.handleItemClick = function handleItemClick(item) {
var _this = this;
var index = item.index,
indexPath = item.indexPath;
var oldActiveIndex = this.activeIndex;
var hasIndex = item.index !== null;
if (hasIndex) {
this.activeIndex = item.index;
}
this.$emit('select', index, indexPath, item);
if (this.mode === 'horizontal' || this.collapse) {
this.openedMenus = [];
}
if (this.router && hasIndex) {
this.routeToItem(item, function (error) {
_this.activeIndex = oldActiveIndex;
if (error) {
// vue-router 3.1.0+ push/replace cause NavigationDuplicated error
// https://github.com/ElemeFE/element/issues/17044
if (error.name === 'NavigationDuplicated') return;
if(error.message){
if(error.message.indexOf('when going') < 0){
console.error(error);
}
}
console.log('my Menu.methods.handleItemClick')
}
});
}
}