Доступ к данным из другого запроса?

Я изучил все учебники GraphQL, связанные с аутентификацией, которые смог найти, но до сих пор не могу осмыслить это.

Если в моем компоненте Auth я запрашиваю токен и учетные данные пользователя следующим образом:

const LOGIN_MUTATION = gql`
  mutation LoginMutation($email: String!, $password: String!) {
    login(email: $email, password: $password) {
      token
      user {
        name
      }
    }
  }
`

Как мне получить доступ к этим данным в другом компоненте? Кажется, что в каждом руководстве говорится, что я помещаю каждый компонент, которому нужны пользовательские данные, в другой элемент <Query>, поэтому каждый компонент должен пытаться войти в систему?

С Redux я могу добавить его в магазин и просто использовать mapStateToProps, чтобы получить его, не запрашивая сервер каждый раз, когда мне нужно имя пользователя. Возможно ли это в Apollo, или я просто пишу сотни запросов для одного и того же?

Эй, Митч, мой ответ прояснил ситуацию?

Joe Warner 12.07.2018 13:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
1
209
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

would every component need to attempt to log in?

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

  • Когда компонент Query монтируется, Apollo Client создает наблюдаемую для нашего запроса. Наш компонент подписывается на результат запроса через кеш Apollo Client.

  • Сначала мы пытаемся загрузить результат запроса из кеша Apollo. Если его там нет, мы отправляем запрос на сервер.

  • Как только данные вернутся, мы нормализуем их и сохраняем в кеше Apollo. Поскольку компонент Query подписывается на результат, он обновляет данные в ответ.

поэтому, если вы извлекаете кредиты пользователя и сохраняете их в кеше, в следующий раз, когда вы собираетесь получить этот элемент, он будет извлекаться из кеша, если его нет в кеше, он будет повторно загружен.

https://www.apollographql.com/docs/react/essentials/queries.html

Другие вопросы по теме