#node.js #next.js #infinite-loop
Вопрос:
Я только что научился Next.js и у меня есть одна проблема с getInitialProps
in _app.jsx
. Я не знаю, почему возникает ошибка бесконечного цикла. Пожалуйста, скажите мне, почему бесконечный цикл и как это исправить.
const MyApp = ({ Component, pageProps }) => {
return (
<>
<Component {...pageProps} />
</>
);
};
MyApp.getInitialProps = async ({ ctx }) => {
console.log("run 1");
if (ctx.res) {
console.log("run here");
ctx.res.writeHead(302, {
Location: "/login",
});
ctx.res.end();
}
return {};
};
export default MyApp;
Комментарии:
1. Бесконечный цикл происходит потому, что этот код также будет выполняться, когда вы находитесь на
/login
странице.2. спасибо вам, но если я не буду использовать ctx.res?. writeHead(302, { Местоположение: «/логин»}); в getInitialProps просто войдите 1 раз, вы знаете, почему это?
Ответ №1:
Бесконечный цикл происходит потому, что перенаправление также происходит, когда вы находитесь на /login
странице. Чтобы предотвратить это, убедитесь, что перенаправление не происходит, когда вы находитесь на этой странице.
MyApp.getInitialProps = async ({ ctx }) => {
if (ctx.res amp;amp; ctx.asPath !== "/login") {
ctx.res.writeHead(302, {
Location: "/login",
});
ctx.res.end();
}
return {};
};
Комментарии:
1. Вполне уверен, что это правильный ответ, кроме того, мне интересно, нужен ли 302, вы можете просто сделать
redirect(ctx, /login);