Apollo useQuery не выполняет сетевой вызов, когда входная переменная одинакова

#javascript #reactjs #graphql #react-apollo #apollo-client

#javascript #reactjs #graphql #реагировать-apollo #apollo-client

Вопрос:

У меня есть компонент более высокого порядка, и он принимает ввод переменной prop с именем «name». Внутри HOC я передаю «name» в качестве входных данных в useQuery.

Если значение имени изменяется, useQuery обращается к серверному API и получает новые результаты, но если значение остается тем же, сетевой вызов, выполняемый useQuery, не выполняется. HOC повторно отображается, но нет n / w вызова. Я получаю те же данные ответа, что и в первый раз (когда «имя» было обновлено). Я также пробовал политику выборки «без кэша» и «только для сети», но безуспешно. Пожалуйста, помогите. Я не могу найти какое-либо решение в Интернете. Спасибо!

Комментарии:

1. показать подробности? код?

Ответ №1:

Это потому, что Apollo кэширует эти данные. Я считаю, что вам нужно перейти к no-cache «нет кэша». https://www.apollographql.com/docs/react/caching/advanced-topics /

в противном случае вы ищете повторную выборку, которую вы можете вызвать по требованию

Комментарии:

1. Я попробовал политику как «без кэша» (извините за опечатку, я обновил вопрос). useQuery не выполняет новый сетевой запрос, пока переменная не изменится. Даже если я остановлю сервер, я увижу данные без изменений для той же входной переменной.

2. @AmanDeepSharma Я думаю, вам следует добавить свой пользовательский хук, весь ваш компонент, если это возможно

3. Я не понял, должен быть способ вызвать useQuery (n / w вызов), даже если входные переменные не изменились.

4. Вы ищете повторную выборку. const { refetch } = useQuery(QUERY, {variables: {...}})