Использование fetchPolicy='cache-and-network' в useQuery в клиенте apollo не обновляет кеш на fetchMore

Я использую apollo-client для своей настройки graphql. У меня есть вызов с разбивкой на страницы, для которого я использую функцию fetchMore, возвращаемую хуком useQuery. В функции fetchMore я использовал ее параметр updateQuery для добавления новых извлеченных данных к результатам в кеше.

fetchMore({
  variables: {
    request: fetchMorerequest,
  },
  updateQuery: (previousResult, { fetchMoreResult }) => {
   const updatedResults = update(previousResult, {
      list: {
        data: { $push: fetchMoreResult.list.data },
        hasMore: { $set: fetchMoreResult.list.hasMore },
      },
    });

  return updatedResults;
  },
});

Это работало нормально для меня.

Теперь я изменил свой fetchPolicy с cache-first по умолчанию на cache-and-network. После этого изменения updatedResults, которые я возвращаю из своей функции updateQuery, отражаются в моем кеше, но не возвращаются в моем компоненте. я вижу обновленные элементы в своем кеше в расширении apollo в chrome. Но не получить их в моем компоненте.

Любая идея, что может быть проблемой здесь? Я что-то упускаю? Пожалуйста помоги.


person ghostCoder    schedule 11.05.2020    source источник


Ответы (1)


Установите nextFetchPolicy: 'cache-first' в defaultOptions или текущих параметрах запроса.

подробнее здесь

person PCGeek    schedule 16.02.2021