我有一个NextJS项目,它使用NextAuth进行会话管理,然后响应查询以在前端检索数据。
然而,在当前格式下(如下所示),useSession()将在检查会话是否经过身份验证时返回undefined
,然后在reactQuery中使用此undefined
,该查询本身将返回undefined
。如何确保仅在成功检索会话并包含用户ID之后才调用useQuery,然后可以将其传递给useQuery?
const AirdropsPage = () => {
const { data: session } = useSession();
const { isLoading, isError, data } = useQuery(["airdropsData"], () =>
fetch(`/api/airdrops?id=${session?.user?.id}`).then((res) => res.json()) //id is undefined
);
return (
{isLoading ? (
<Loader />
) : data ? (
<Table data={data.airdrops} columns={columns} />
) : null}
);
};
1条答案
按热度按时间p8h8hvxi1#
该问题是由于在_app.tsx中 Package 了React查询提供程序的Next.js getLayout属性造成的。解决方案是将这些提供程序移到 Package 器之外,如下所示。