Skip to main content

MutationCache

MutationCache是突变的存储。 通常,您不会直接与 MutationCache 交互,而是使用QueryClient.

import { MutationCache } from "@tanstack/react-query";

const mutationCache = new MutationCache({
onError: (error) => {
console.log(error);
},
onSuccess: (data) => {
console.log(data);
},
});

其可用的方法有:

  • getAll
  • subscribe
  • clear

Options

  • onError?: (error: unknown, variables: unknown, context: unknown, mutation: Mutation) => void

    • 可选的
    • 如果某些突变遇到错误,将调用此函数。
  • onSuccess?: (data: unknown, variables: unknown, context: unknown, mutation: Mutation) => void

    • 可选的
    • 如果某些突变成功,将调用此函数。
  • onMutate?: (variables: unknown, mutation: Mutation) => void

    • 可选的
    • 此函数将在某些突变执行之前被调用。

全局回调

MutationCache上的onError,onSuccessonMutate回调可用于在全局级别上处理这些事件。它们与提供给 QueryClientdefaultOptions不同,因为:

  • defaultOptions可以被每个 Mutation 覆盖——将始终调用全局回调。
  • onMutate不允许返回上下文值。

mutationCache.getAll

getAll返回缓存中的所有突变。

注意:大多数应用程序通常不需要此功能,但在极少数情况下需要有关突变的更多信息时会派上用场

const mutations = mutationCache.getAll();

Returns

  • Mutation[]
    • 缓存中的突变实例

mutationCache.subscribe

subscribe方法可用于订阅整个突变缓存,并被告知对缓存的安全/已知更新,例如突变状态更改或更新、添加或删除的突变。

const callback = (event) => {
console.log(event.type, event.mutation);
};

const unsubscribe = mutationCache.subscribe(callback);

Options

  • callback: (mutation?: MutationCacheNotifyEvent) => void
    • 每当更新时,都会使用突变缓存调用此函数。

Returns

  • unsubscribe: Function => void
    • 此函数将从突变缓存中取消订阅回调。

mutationCache.clear

clear方法可用于完全清除缓存并重新开始。

mutationCache.clear();