私は長い間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');
}
}
});
それがログインページであるかどうかを判断し、無限ループが発生しないように、それを手放します。