在使用路由守卫的时候,不知道你们碰到没router.beforeEach()会出现一个死循环的问题。 其实问题很简单:
也就是说 beforeEach()必须调用next(), 否则就会出现无限循环,
next() 和 next('xxx') 是不一样的,区别就是前者不会再次调用router.beforeEach(),后者会!!!
小的案例 : 登录页('/login') 首页('/')
router.beforeEach((to, from, next) => {
var userInfo= JSON.parse(sessionStorage.getItem('userInfoStorage'));//获取浏览器缓存的用户信息
if(userInfo){//如果有就直接到首页咯
next();
}else{
if(to.path=='/login'){//如果是登录页面路径,就直接next()
next();
}else{//不然就跳转到登录;
next('/login');
}
}
});
这样写就不会出现死循环了。
其实就是next()的使用没有完全理解透彻,才会导致这个死循环的问题。
还是建议多看看官方文档吧!!!!!!!!