Я изучил все учебники GraphQL, связанные с аутентификацией, которые смог найти, но до сих пор не могу осмыслить это.
Если в моем компоненте Auth я запрашиваю токен и учетные данные пользователя следующим образом:
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
token
user {
name
}
}
}
`
Как мне получить доступ к этим данным в другом компоненте? Кажется, что в каждом руководстве говорится, что я помещаю каждый компонент, которому нужны пользовательские данные, в другой элемент <Query>, поэтому каждый компонент должен пытаться войти в систему?
С Redux я могу добавить его в магазин и просто использовать mapStateToProps, чтобы получить его, не запрашивая сервер каждый раз, когда мне нужно имя пользователя. Возможно ли это в Apollo, или я просто пишу сотни запросов для одного и того же?


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
Эй, Митч, мой ответ прояснил ситуацию?