好久没写vue了,今天突然犯了一个致命的小错误,代码如下:
routes.beforeEach((to, from, next) => {
if (sessionStorage.getItem('token')) {
next();
} else {
next('/login');
}
});
貌似一看没问题,但是却陷入了死循环,最后导致栈溢出。
原因:没有排除当前地址,就是/login地址,导致了循环调用。
解决如下:
routes.beforeEach((to, from, next) => {
if (sessionStorage.getItem('token')) {
next();
} else {
//如果是登录页面路径,就直接next()
if (to.path === '/login') {
next();
} else {
next('/login');
}
}
});
判断如果是登录页就放行,这样就不会死循环了。