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'); } } });
判斷如果是登錄頁就放行,這樣就不會死循環了。
