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');
    }
  }
});

判斷如果是登錄頁就放行,這樣就不會死循環了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM