Использование Relay и GraphQL, скажем, что у меня есть схема, которая возвращает средство просмотра, и встроенный список связанных документов. Корневая запрос (составленный с фрагментами) будет выглядеть как-то вроде этого:Получение дополнительной информации для определенного элемента списка в relay/graphql
query Root {
viewer {
id,
name,
groups {
edges {
node {
id,
name,
}
}
}
}
}
Это позволит мне показать пользователю, и список всех связанных с ней группировок.
Теперь предположим, что я хочу, чтобы пользователь мог нажать на этот элемент списка и расширить его, чтобы показать комментарии, связанные с этим конкретным элементом списка. Как я должен реструктурировать свой запрос для маршрута ретрансляции, чтобы получить эти комментарии? Если я добавлю край комментариев к краю групп, то не будет ли он получать комментарии для всех групп?
query Root {
viewer {
id,
name,
groups {
edges {
node {
id,
name,
comments {
edges {
node {
id,
content
}
}
}
}
}
}
}
}
Или мне нужно изменить запрос маршрута, чтобы найти определенную группу?
query Root {
group(id: "someid"){
id,
name,
comments {
edges {
node {
id,
content
}
}
}
},
viewer {
id,
name,
groups {
edges {
node {
id,
name,
}
}
}
}
}
Меня беспокоит, в частности, используя это в контексте relay
. I.e., как я могу эффективно построить запрос маршрута, который будет получать только комментарии для расширенного элемента списка (или элементов), но при этом все еще использует кэшированные данные, которые уже существуют, и будет обновляться при выполнении мутаций? Вышеприведенный пример может работать для определенной расширенной группы, но я не уверен, как я мог бы развернуть несколько групп одновременно, не получая эти поля для всех элементов группы.
Ради интереса, в: https://github.com/facebook/relay/commit/5330ba5ce697d13febd018f2baac8aedff06bfd6 – steveluscher
Есть ли способ, чтобы принести дополнительные данные для одного элемента в запросе списка (_edges_)? ** Почему? ** Я пытаюсь легко перемещать/масштабировать элемент списка в один элемент. Я тестировал все стратегии, но не могу найти способ. – Solo
Да. На данный момент вы хотите показать представление одного элемента, вы узнаете идентификатор элемента. В этот момент представление одного элемента должно свернуться с запросом ** node ** в корне. 'node (id: $ itemID) {$ {Component.getFragment ('item')}}'. Поскольку элемент уже находится в хранилище из ** ** ** выборки, дополнительный сетевой запрос не потребуется. – steveluscher