beforeEachフック、next( '/ login')ジャンプ問題、ワイヤレスループが原因で最大コールスタックサイズを超えた問題

私は長い間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');
    }
  }
});

それがログインページであるかどうかを判断し、無限ループが発生しないように、それを手放します。

おすすめ

転載: blog.csdn.net/qq_36850813/article/details/103032651