我正在为 ssr 使用 nextJS 和 urqlClient。目前我的所有页面都关闭了 ssr。我面临的问题如下。我有个人资料页面,它在从 graphql 获取用户后呈现数据。如果找不到用户,它将路由器推送用户登录。我面临的问题是,当我使用 localhost:3000/profile 手动转到浏览器中的配置文件页面时,突变在第一次渲染时返回未定义,而在第二次渲染时返回对象。
但是,如果我使用 NavBar 组件访问配置文件页面,<NextLink href="/profile">
则突变会在第一次渲染时返回对象,并且数据会正确显示。我感觉它与 SSR 有关,因为当我重新加载页面时,console.log("profile page", data);
它会在服务器端触发,但当我使用导航栏时它不是。
我将所有页面都包裹在 urqlclient 中
export default withUrqlClient(createUrqlClient, { ssr: false })(Profile);
这是个人资料页面的代码。
const [{ data, fetching }] = useMeQuery({ pause: isServer() });
console.log("profile page", data);
useEffect(() => {
if (!data?.me) {
router.push("/auth");
}
});