Dim*_*ers 1 node.js reactjs next.js react-query next-auth
我有一个 NextJS 项目,它使用 NextAuth 进行会话管理,然后使用 React Query 来检索前端数据。
但是,使用当前格式(如下所示), useSession() 将undefined在检查会话是否已通过身份验证时返回,然后undefined在reactQuery中使用它,它本身将返回undefined. 如何确保仅在成功检索会话并包含 userID 之后才调用 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}
);
};
Run Code Online (Sandbox Code Playgroud)
一般来说,您想要的是将在 queryFn 中使用的所有内容添加为 queryKey。然后,当您的依赖项尚未准备好时,您可以禁用查询:
const { data: session } = useSession();
const id = session?.user?.id
const { isLoading, isError, data } = useQuery(
["airdropsData", id],
() =>
fetch(`/api/airdrops?id=${id}`).then((res) => res.json())
),
{
enabled: !!id
}
)
Run Code Online (Sandbox Code Playgroud)
一旦useSession返回 id,查询就会启用并开始获取。此处记录了这一点。
| 归档时间: |
|
| 查看次数: |
3423 次 |
| 最近记录: |