gpt4 book ai didi

javascript - 如何在 Apollo Client React 中获取多个条件查询?

转载 作者:行者123 更新时间:2023-11-30 13:47:54 26 4
gpt4 key购买 nike

我正在使用 Apollo Client,为了获取查询,我正在使用 @apollo/react-hooks 包中的 useQuery

我想完成以下任务:

步骤列表:

第 1 步:获取查询阶段

const GetStage = useQuery(confirmStageQuery, {
variables: {
input: {
id: getId.id
}
}
});

第 2 步:根据我们从 GetStage 获得的响应,我们想在 2 个单独的查询之间切换

if (!GetStage.loading && GetStage.data.getGame.stage === "Created") {
Details = useQuery(Query1, {
variables: {
input: {
id: getId.id
}
}
});
} else if (!GetStage.loading && GetStage.data.getGame.stage === "Confirmed") {
Details = useQuery(Query2, {
variables: {
input: {
id: getId.id
}
}
});
}

第 3 步:此外,每次加载页面时,我都会重新获取数据。

useEffect(() => {
//Fetch for Change in the Stage
GetStage.refetch();

//Fetch for Change in the Object
if (Details) {
Details.refetch();
if (Details.data) {
setDetails(Details.data.getGame);
}
}
});

问题?

Rendered more hooks than during the previous render.

Details.data is undefined

那么我们如何在 Apollo Client 中调用多个异步查询呢?

最佳答案

正如 Philip 所说,你不能有条件地调用 hooks。然而,有条件地调用查询非常普遍,因此 Apollo 允许您使用 skip 选项跳过它:

const { loading, error, data: { forum } = {}, subscribeToMore } = useQuery(GET_FORUM, {
skip: !forumId,
fetchPolicy: 'cache-and-network',
variables: { id: forumId },
});

调用了 Hook ,但没有调用查询。在我看来,这比对您的用例使用惰性查询要简单和清晰得多。

关于javascript - 如何在 Apollo Client React 中获取多个条件查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58925125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com