javascript - 如何在 Apollo Client React 中获取多个条件查询?
问题描述
我正在使用 Apollo Client,并useQuery
从包中获取我正在使用的查询@apollo/react-hooks
。
我想完成以下任务:
步骤清单:
第 1 步:获取查询stage
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);
}
}
});
问题?
比上一次渲染时渲染了更多的钩子。
Details.data 未定义
那么我们如何在 Apollo Client 中调用多个异步查询呢?
解决方案
正如菲利普所说,你不能有条件地调用钩子。然而,有条件地调用查询是很常见的,所以 Apollo 允许您使用以下skip
选项跳过它:
const { loading, error, data: { forum } = {}, subscribeToMore } = useQuery(GET_FORUM, {
skip: !forumId,
fetchPolicy: 'cache-and-network',
variables: { id: forumId },
});
钩子被调用,但查询不是。在我看来,这比对您的用例使用惰性查询更简单、更清晰。
推荐阅读
- php - 如何从 shell_exec 执行另一个 php 脚本
- r - R数据框仅具有匹配的行
- java - Java StringBuilder 字符附加返回不需要的数字
- reactjs - 使用 Babel-Plugin-React-Css-Modules 导入库样式表
- r - 如何在 R 中使用 sparklyr 进行整数除法(mod)?
- angular - 如何在 ionic 3 / angular 中动态添加 [ngStyle] 指令
- angular - 使用 POST 参数创建 post 服务
- c# - 连接到 SQL Server 2012 并出现服务器表单错误
- c# - 来自网站的 WebRequest 返回意外结果
- dji-sdk - DJI SDK iOS APP 遥测