Кэширует ли Apollo запросы, сделанные из компонента Query? - PullRequest
0 голосов
/ 19 мая 2019

У меня есть один Query компонент, который извлекает данные с сервера GraphQL, и все отлично работает.

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

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

Вот исходный код:

1 Ответ

1 голос
/ 19 мая 2019

Вызов readQuery просто читает из кэша один раз, что почти никогда не то, что вы хотите Компонент Query подписывается на изменения в кэше и запускает сетевой запрос в случае пропуска кэша (при условии, что вы используете стандартную cache-first политику выборки ). Вы можете безопасно использовать несколько Query компонентов в вашем приложении для одного и того же запроса - при условии, что они используют один и тот же variables, рендеринг нескольких Query компонентов приведет только к одному запросу на ваш сервер.

readQuery следует использовать только внутри update функций, когда вам нужно прочитать, а затем обновить часть кэша - не используйте его для предоставления данных вашим компонентам. Если вы хотите только читать из кэша, вы можете использовать политику cache-only, но, опять же, это редко требуется, потому что Apollo достаточно умен, чтобы знать, когда запрос находится в полете.

...