Вызвать API-интерфейс выборки, который сохраняется один раз при использовании кеша apollo?
Я работал над 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 ответ
Решение
Refetch Queries - простейший способ обновления кеша.
https://www.apollographql.com/docs/angular/features/cache-updates/
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,
},
},
],
}
);