译零 TransZero · TanStack Query 中文文档
主站

MutationCache

更新于 2026-11-02 Lit 查看英文原文 ↗

定义于:packages/query-core/src/mutationCache.ts:123

MutationCache 是用于存储修改的缓存。

通常,你不会直接与 MutationCache 交互,而是使用 QueryClient。你可以订阅它(继承自 Subscribable),以便在缓存发生安全/已知更新(例如添加、移除或更新修改)时收到通知。

示例

TypeScript
1const unsubscribe = mutationCache.subscribe((event) => {2  console.log(event.type, event.mutation)3})

继承自

  • Subscribable<MutationCacheListener>

构造函数

构造函数

TypeScript
1new MutationCache(config?: MutationCacheConfig): MutationCache;

定义于:packages/query-core/src/mutationCache.ts:128

参数

config?

MutationCacheConfig = {}

返回值

MutationCache

覆盖

TypeScript
1Subscribable<MutationCacheListener>.constructor

属性

config

TypeScript
1config: MutationCacheConfig = {};

定义于:packages/query-core/src/mutationCache.ts:128

方法

clear()

TypeScript
1clear(): void;

定义于:packages/query-core/src/mutationCache.ts:262

从缓存中移除所有修改。

返回值

void

示例

TypeScript
1const mutationCache = queryClient.getMutationCache()2 3mutationCache.clear()

find()

TypeScript
1find<TData = unknown, TError = Error, TVariables = any, TOnMutateResult = unknown>(filters: MutationFilters):2  | Mutation<TData, TError, TVariables, TOnMutateResult>3  | undefined;

定义于:packages/query-core/src/mutationCache.ts:306

一个稍高级的方法,可用于从缓存中获取一个已存在的修改实例。若该修改不存在,则返回 undefined。

大多数应用通常不需要此方法,但在极少数需要获取更多修改信息的场景下会很有用。

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = any

TOnMutateResult

TOnMutateResult = unknown

参数

filters

MutationFilters

匹配所用的筛选器。exact 默认为 true。

返回值

| Mutation<TData, TError, TVariables, TOnMutateResult> | undefined

首个匹配的修改,或 undefined。

参见

MutationCache#findAll

示例

TypeScript
1const mutationCache = queryClient.getMutationCache()2 3const mutation = mutationCache.find({ mutationKey: ['addPost'] })

findAll()

TypeScript
1findAll(filters?: MutationFilters): Mutation<unknown, Error, unknown, unknown>[];

定义于:packages/query-core/src/mutationCache.ts:337

一个更高级的方法,可用于从缓存中获取所有匹配给定筛选器的修改实例。若无匹配的修改,则返回空数组。

大多数应用通常不需要此方法,但在极少数需要获取更多修改信息的场景下会很有用。

参数

filters?

MutationFilters = {}

匹配所用的筛选器。若不提供筛选器,则返回所有修改。

返回值

Mutation<unknown, Error, unknown, unknown>[]

所有匹配的修改。

参见

MutationCache#find

示例

TypeScript
1const mutationCache = queryClient.getMutationCache()2 3const mutations = mutationCache.findAll({ mutationKey: ['addPost'] })

getAll()

TypeScript
1getAll(): Mutation<unknown, Error, unknown, unknown>[];

定义于:packages/query-core/src/mutationCache.ts:286

返回缓存中的所有修改。

大多数应用通常不需要此方法,但在极少数需要获取更多修改信息的场景下会很有用。

返回值

Mutation<unknown, Error, unknown, unknown>[]

缓存中的全部修改。

示例

TypeScript
1const mutationCache = queryClient.getMutationCache()2 3const mutations = mutationCache.getAll()

hasListeners()

TypeScript
1hasListeners(): boolean;

定义于:packages/query-core/src/subscribable.ts:43

当至少有一个监听器已注册时返回 true;当所有监听器均已取消订阅后返回 false。

返回值

boolean

至少有一个监听器已注册时返回 true。

继承自

TypeScript
1Subscribable.hasListeners

subscribe()

TypeScript
1subscribe(listener: MutationCacheListener): () => void;

定义于:packages/query-core/src/subscribable.ts:28

注册一个监听器,使其在该对象通知每次更新时被调用。返回一个用于再次移除该监听器的函数——调用它即可停止监听。基类自身永远不会主动丢弃监听器,但某些子类会在 destroy() 中清空其全部监听器。

参数

listener

MutationCacheListener

每次更新时被调用,参数为子类传递给其订阅者的任意值。

返回值

一个用于移除监听器的函数。

() => void

示例

TypeScript
1const unsubscribe = subscribable.subscribe(() => {2  // react to the update3})4 5unsubscribe()

继承自

TypeScript
1Subscribable.subscribe

本页为 TanStack Query 文档(Lit 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de