Вызовите API выборки, который хранится один раз при использовании кеша apollo? - PullRequest
0 голосов
/ 01 ноября 2019

Я работаю над Apollo GQL. Я использую кеш apollo для уменьшения нежелательных вызовов API. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что, когда я обновил данные, я не должен повторно извлекать данные, потому что API уже вызывается один раз и сохраняется в кэше.

  • То, что я хотел сделать, это либо очистить кеш для определенного запроса или повторно получить данные с сервера. !!
  • Я не могу очистить весь кэш, потому что я вызываю множество API

Мне нужно повторно получить данные после следующего вызова мутации.

const [
reopenInvoice,
{ loading: reopenLoading, data: reopenData, error: reopenError },
] = useMutation<IReopenData, IReopenVariables>(INVOICE_CLONE, {
onCompleted: ({ invoiceClone: { errors, status } }) => {
  if (!errors || !errors.length) {
    message.success("Invoice Reopened");
  } else {
    message.error(errors.join(" "));
  }
},
});

1 Ответ

1 голос
/ 02 ноября 2019

refetchQueries - самый простой способ обновления кэша.

https://www.apollographql.com/docs/angular/features/cache-updates/#refetchqueries

 const [reopenInvoice, { loading: reopenLoading, data: reopenData, error: reopenError }] = useMutation<IReopenData, IReopenVariables>(
        INVOICE_CLONE,
        {
            onCompleted: ({ invoiceClone: { errors, status } }) => {
                if (!errors || !errors.length) {
                    message.success("Invoice Reopened");
                } else {
                    message.error(errors.join(" "));
                }
            },
            refetchQueries: [
                {
                    query: TO_REFETCH_QUERY,
                    variables: {
                        id: objectID,
                    },
                },
            ],
        }
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...