Каков наилучший способ получить все дерево API Graphql в приложении React? - PullRequest
4 голосов
/ 16 октября 2019

Допустим, у меня есть следующая схема Graphql:

type Cinema {
    name: String!    
    rooms: [Room]!
}

type Room {
    name: String!
    seats: [Seat]!
}

type Seat {
    number: Int!
    booked: Boolean!
}

На виде спереди я хочу отобразить список меню слева со свернутой навигацией, например:

  • cinemaимя
    • название комнаты 1
      • место 1 (забронировано)
      • место 2 (забронировано)
      • ...
    • название комнаты 2
      • место 1 (забронировано)
      • место 2 (забронировано)
      • ...
    • . ..

А справа я хочу показать сводку с выбранным названием кинотеатра, названием выбранной комнаты и картой со всеми местами.

Итак, компонент меню представляет собой классический чехол в Graphql с нумерацией страниц для каждого соединения (комнаты, места). Но компоненту сводки нужны все данные до создания экземпляра , и он не является потомком компонента меню:

<Page>
  <Menu />
  <Summary />
<Page />

Да, с этой схемой можно справиться!

Должен ли я фрагментировать свой запрос в соответствии с моими компонентами, повторять выборку до тех пор, пока у меня не будут все данные, и сохранить результаты в выделенном состоянии для отправки в компонент сводки?

Нет, это не такможно справиться с этой схемой!

Должен ли я сделать только один запрос без нумерации страниц и вручную отправить компоненты на мои компоненты?


Примечание 1 : Я использую Relay Modern в качестве клиента Graphql с нумерацией курсоров в стиле ретрансляции , но все предложения приветствуются.

Примечание 2 : этот пример проще, чем мой реальный пример использования,У меня много вложенных страниц, и моему «итоговому» компоненту нужно все данные при инициализации.

...