我有个小问题。我对nextjs非常陌生,我正在尝试通过制作应用程序来学习。我已经成功地使用next建立了一个登录系统,在保护路由时几乎没有问题。成功登录后,我已成功添加cookie。现在,每当用户转到受保护的路由时,我都要验证cookie。使用本教程,我遵循了以下步骤。
制作一个高阶组件并使用它检查cookie验证。
使用它 Package 受保护的组件。
下面是我的本领。
import { useRouter } from "next/router";
import Cookies from 'js-cookie';
const withAuth = (WrappedComponent) => {
return (props) => {
if (typeof window !== "undefined") {
const Router = useRouter();
const accessToken = Cookies.get('token');
if (!accessToken) {
Router.replace("/");
return null;
}
return <WrappedComponent {...props} />;
}
return null;
};
};
export default withAuth;
然后我用上面的hod Package 了我的组件。
import React, { Component } from 'react';
import withAuth from '../utils/withAuth';
class Home extends Component {
render() {
return (
<div>
HOME
</div>
);
}
}
export default withAuth(Home);
上面的问题#1 hod显示控制台警告,如下所示。
警告:服务器html中应包含匹配的。div
他们认为我可以解决这个问题吗?根据github的一些回答,我发现可以使用useeffect解决这个问题。有人能帮我吗?
问题#2这样,我必须用我的hod Package 每个受保护的组件。这是做这件事的正确方法还是有其他方法比这做得更好?
非常感谢您或您的支持。
1条答案
按热度按时间i7uaboj41#
花了一段时间之后。我能够通过使用下面的代码解决这个问题。现在我只想知道上面提到的第二个问题的答案。
问题#2这样,我必须用我的hod Package 每个受保护的组件。这是做这件事的正确方法还是有其他方法比这做得更好?
非常感谢您或您的支持。
我用来解决这个问题的代码