Клиент Apollo для управления политикой слияния

#apollo #apollo-client #react-apollo

Вопрос:

Есть ли способ сказать apollo, чтобы он вызывал политику слияния только после использования метода fetchMore? Я использую его для реализации бесконечной прокрутки и объединения существующих и входящих данных, что идеально подходит для меня. Но когда я использую метод writeQuery для изменения кэша вручную, политика слияния выполняется и после этой операции, и это приводит к дублированию данных.

Ответ №1:

У вас есть доступ к переменным в функции слияния.

если fetchMore у вас есть определенная переменная разбиения на страницы, которой writeQuery у вас нет, вы можете решить объединить входящие результаты только для fetchMore :

Например, если fetchMore используется переменная nextToken:

 typePolicies: {
      Query: {
        fields: {
          myQuery: {
            keyArgs: false,
            merge: (existing = [], incoming = [], { args }) => {
              if (args?.nextToken === undefined) return incoming
              return [...existing, ...incoming]
            }
          },