beforeEach钩子,next('/login') 跳转问题,无线循环导致Maximum call stack size exceeded问题
Posted ouyangxiaoyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beforeEach钩子,next('/login') 跳转问题,无线循环导致Maximum call stack size exceeded问题相关的知识,希望对你有一定的参考价值。
vue项目中,在router.js中判断登录状态时使用
beforeEach导致无线死循环Maximum call stack size exceeded
代码如下:
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‘); } } });
判断如果是登录页就放行,这样就不会死循环了。
以上是关于beforeEach钩子,next('/login') 跳转问题,无线循环导致Maximum call stack size exceeded问题的主要内容,如果未能解决你的问题,请参考以下文章
45导航钩子函数中使用next()和next('指定路径')的区别: