问题描述:
在调用Vue中的全局前置导航守卫beforeEach(to, from, next)中的next函数,在给next()传参数的时候出现死循环的问题!
导致问题原因:
其实导致这个问题的根本是没有完全理解beforeEach()和next("/somewhere")的作用
首先,我们来看看next()的用法
究其根本是当执行了next("/somewhere")的时候又触发了beforeEach()这个钩子,所以就变成了无限死循环!
解决办法:
router.beforeEach((to, from, next) => {
let {path} = to;
if(path=== "/somewhere") {
next(); // 导航目的地符合预期,继续后续事情
}else {
next("/somewhere");
// 导航目的地不符合预期,重新路由新路径地址,然后会再次触发beforeEach钩子并进行二次判断
}
});