如何解决Nextjs 路由器未正确更改页面源
所以基本上我在我的项目中使用 Next.js 并且遇到了一些麻烦。
我在使用 redux 的项目中进行了身份验证。在我的登录页面中有一个 if 条件检查 isAuthenticated
是否为真(isAuthenticated
来自我的 redux 商店)。如果为真,则下一个路由器执行 router.push('/');
。这工作正常,但是当我查看主页的页面源时,它仍然将登录页面显示为源页面。这是为什么?
我还将我的主页包装在一个路由管理高阶组件中,该组件检查 getInitialProps
中同样来自 redux 的用户身份验证。再次路由和一切正常,只是源页面仍然显示登录页面。我是 next 新手,所以我不知道出了什么问题。
这是登录页面的重定向。
import Router from 'next/router';
// ...
if (isAuthenticated) {
Router.push("/");
}
这是路线管理器。
const isAuthenticated = store.getState().auth.isAuthenticated;
AuthPage.getInitialProps = async (ctx) => {
if (routeType === "authenticator") {
if (isAuthenticated) {
if (typeof window === "undefined") {
ctx.res.writeHead(302,{ location: "/" });
ctx.res.end();
} else {
const router = useRouter();
router.push("/");
}
}
} else if (routeType === "private") {
if (!isAuthenticated) {
if (typeof window === "undefined") {
ctx.res.writeHead(302,{ location: "/login" });
ctx.res.end();
} else {
const router = useRouter();
router.push("/login");
}
}
}
if (Component.getInitialProps) {
const authProps = await Component.getInitialProps({
...ctx,auth: isAuthenticated,});
return { ...authProps,isAuthenticated };
}
return { isAuthenticated };
};
return AuthPage;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。