如何解决如何在 React + Apollo GraphQL 中使用先前查询的结果进行查询?
在我的一个组件中,我立即查询我的后端。之后,我想用我第一个查询的数据再次查询我的后端,所以我第二个查询的变量来自第一个。
我已经尝试过 useLazyQuery
但它要么不起作用,要么我放置的位置不正确。我试过在 skip
钩子中使用 useQuery
但它似乎不起作用,因为我是我测试跳过的条件,也是我正在使用的变量查询本身,我正在检查它是否已定义。
我宁愿不使用 compose
,因为我主要在我的 React 组件中使用钩子,我不确定如何构建它们并将它们与我的代码相适应。
我还分别使用了两个查询结果。我的后端结构像一棵树,所以我同时使用一个节点和它的子节点。
解决方法
如果可以避免的话,我不会为此使用 useLazyQuery
,因为它的查询生命周期与更常见的 useQuery
不同。它可以工作,但让我们尝试使用 useQuery
。
您希望无条件执行第一个查询 query1
。很简单。
您希望第二个查询 query2
仅在 query1
返回结果时执行。然后是根据 skip
返回的内容在 query2
上使用 query1
的问题。最简单的形式:
const { loading: loading1,error: error1,data: data1 } = useQuery('...query1...');
const { loading: loading2,error: error2,data: data2 } = useQuery('...query2...',{
variables: {
myVariable: data1 && data1.path.to.data,}
skip: !data1,// This is simpler that checking error1 and loading1.
});
此外,如果第一个查询没有返回足够的结果,您可能希望阻止第二个查询的执行。根据您的确切架构和查询,它可能是这样的:
skip: !data1 || !data1.searchForIDs || data1.searchForIDs.length === 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。