Я хотел бы обратиться в первую очередь к людям, впервые знакомым с GraphQL: если вы оказались в ситуации, когда у вас есть водопад запросов или n + 1 запросов в GraphQL, это Весьма вероятно, что вы либо не используете API GraphQL правильно, либо ваш API GraphQL плохо разработан. Могут быть единичные случаи использования, когда это единственный способ справиться с ситуацией, и я просто предполагаю, что ОП уже пытался избежать ситуации в целом.
Следующее предназначено для "react-apollo": ">2.1"
. То же самое может быть достигнуто с помощью 2 graphql
HOCs и опции запроса skip
. Идея состоит в том, чтобы отложить второй запрос с помощью опции skip
, пока не будут доступны данные для первого запроса.
Отказ от ответственности: следующий код не тестируется и служит только для передачи общей идеи или шаблона.
function MyComponent() {
return (
<Query query={QUERY1}>
{query1 => (
<Query
query={QUERY2}
variables={{ x: query1.data.x }}
skip={query1.loading}
>
{query2 => (
<div>
{JSON.stringify({
query1Data: query1.data,
query2Data: query2.data
})}
</div>
)}
</Query>
)}
</Query>
);
}