Javascript 链接查询树w/o";渲染的钩子比上一次渲染时多”;

Javascript 链接查询树w/o";渲染的钩子比上一次渲染时多”;,javascript,reactjs,apollo,react-apollo,Javascript,Reactjs,Apollo,React Apollo,这是一个使用rest链接的apollo客户端。 我有两个api需要点击,一个带有记录的值和id,另一个api提供关于记录的更多信息。然后,我将呈现的内容的信息缝合在一起。不。。。没有gql后端,只是尝试向前迈出一步并连接客户端。 我尝试这样做的方式是用钩子 const{data:recordsById={},loading:loading1}=useQuery(firstQuery,{variables:{sectionId}) const records=Object.keys(records

这是一个使用rest链接的apollo客户端。 我有两个api需要点击,一个带有记录的值和id,另一个api提供关于记录的更多信息。然后,我将呈现的内容的信息缝合在一起。不。。。没有gql后端,只是尝试向前迈出一步并连接客户端。 我尝试这样做的方式是用钩子

const{data:recordsById={},loading:loading1}=useQuery(firstQuery,{variables:{sectionId})
const records=Object.keys(recordsById).map((recordId)=>{
const{data}=useQuery(第二个查询,{skip:loading1,变量:{sectionId,recordId})
返回{
id:recordId,
值:recordsById[recordId],
信息:数据,
}
})
显然,当firstQuery使用类似
{fooId:'something',barId:'else'}
的对象响应时,在下一次渲染中会有更多的useQuery效果。
使用apollo进行这样的顺序查询的正确方法是什么?

您可以将第二个查询移动到子组件中。
第一个查询完成后,您可以呈现所有子组件,然后它们可以安全地使用第二个查询(无条件)。

React失败,因为在内部,它将钩子的每个调用绑定到组件以及如何调用的顺序,这意味着在每个组件中钩子的调用顺序和调用的钩子数应该是常量,在您的组件中,您应该避免在任何类型的循环中使用挂钩,例如将其拆分为单独的组件