我想知道如果用户在下面的某个位置(例如嵌套在
validateToken
中)注销,我如何才能回忆起 Navigation
获取。清除 user
变量(或为其设置用户)的好方法是什么?
布局.tsx:
import { cookies } from "next/headers";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const response = await validateToken(cookies());
let user = null;
if (response.success) user = response.data;
return (
<html lang="en">
<body>
<Navigation user={user}
{children}
</body>
</html>
);
}
当我刷新页面时,
user
数据始终是最新的,因此服务器端正在工作。
完整代码可以在这里找到: https://github.com/lextoc/tracky-next
我已经用 React Query 的
initialData
解决了这个问题(比我想象的要简单😅)。我仍然遇到一个问题,即数据并不总是显示,但这将与客户端 React 查询相关。对于有兴趣的人,您可以在这里找到解决方案:
https://github.com/lextoc/tracky-next/blob/main/app/layout.tsx#L67