MutationObserver
定义于:packages/query-core/src/mutationObserver.ts:37
观察单个修改,并从中派生出一个 MutationObserverResult。
类似 useMutation 的框架 Hook 会为每次 Hook 调用创建一个 MutationObserver,在重新渲染期间保持其稳定性,在传入 Hook 的选项发生变化时调用 setOptions,订阅它以在更新时重新渲染,并读取 getCurrentResult() 以返回对应值。调用 mutate() 会在 MutationCache 中构建一个新的底层 Mutation 并执行它。
示例
1const observer = new MutationObserver(queryClient, {2 mutationFn: (variables: { title: string }) => addPost(variables),3})继承自
Subscribable<MutationObserverListener<TData,TError,TVariables,TOnMutateResult>>
类型参数
TData
TData = unknown
TError
TError = DefaultError
TVariables
TVariables = void
TOnMutateResult
TOnMutateResult = unknown
构造函数
构造函数
1new MutationObserver<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(client: QueryClient, options: MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>): MutationObserver<TData, TError, TVariables, TOnMutateResult>;定义于:packages/query-core/src/mutationObserver.ts:57
参数
client
options
MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>
返回值
MutationObserver<TData, TError, TVariables, TOnMutateResult>
覆盖
1Subscribable<2 MutationObserverListener<TData, TError, TVariables, TOnMutateResult>3>.constructor属性
options
1options: MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>;定义于:packages/query-core/src/mutationObserver.ts:45
方法
getCurrentResult()
1getCurrentResult(): MutationObserverResult<TData, TError, TVariables, TOnMutateResult>;定义于:packages/query-core/src/mutationObserver.ts:165
返回观察者当前的结果,该结果派生自所观察修改的状态(若尚未构建任何修改,则返回默认的 idle 状态,例如首次调用 mutate() 之前或调用 reset() 之后)。
返回值
MutationObserverResult<TData, TError, TVariables, TOnMutateResult>
观察者的最新结果。
hasListeners()
1hasListeners(): boolean;定义于:packages/query-core/src/subscribable.ts:43
当至少有一个监听器已注册时返回 true;所有监听器均取消订阅后返回 false。
返回值
boolean
若至少有一个监听器已注册,则返回 true。
继承自
1Subscribable.hasListenersmutate()
1mutate(variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TOnMutateResult>): Promise<TData>;定义于:packages/query-core/src/mutationObserver.ts:217
使用观察者当前的选项在 MutationCache 中构建一个新的 Mutation,将此观察者从此前观察的修改中分离,并将其附加到新修改上,然后使用给定变量执行该修改。
可选的按次调用 options(onSuccess/onError/onSettled)将在修改最终完成时被调用,此外还会调用观察者自身选项中定义的任意回调函数。
参数
variables
TVariables
传递给 mutationFn 的变量。
options?
MutateOptions<TData, TError, TVariables, TOnMutateResult>
按次调用的 onSuccess、onError 和 onSettled 回调函数。
返回值
Promise<TData>
一个 Promise,成功时解析为修改的数据,失败时拒绝并抛出其错误。
示例
1await observer.mutate(2 { title: 'New post' },3 { onSuccess: (data) => console.log(data) },4)reset()
1reset(): void;定义于:packages/query-core/src/mutationObserver.ts:188
将观察者从其当前正在观察的修改(如果存在)中分离,并将所观察结果重置为其默认的 idle 状态。
这不会取消正在进行中的修改;该修改本身仍会继续运行直至完成,其自身的回调函数也仍会触发,但此观察者将停止反映其状态,后续的 mutate() 调用将构建一个全新的修改。
返回值
void
参见
示例
1observer.reset()setOptions()
1setOptions(options: MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>): void;定义于:packages/query-core/src/mutationObserver.ts:100
更新观察者的选项。
如果新 mutationKey 与前一个不同(且两者均已定义),则观察者会被重置,即从其此前观察的修改中分离。否则,若当前所观察的修改仍是 pending,其选项也会就地更新。
参数
options
MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>
新的修改观察者选项。在应用前,它们会先通过 QueryClient#defaultMutationOptions 进行默认值填充。
返回值
void
示例
1observer.setOptions({2 mutationFn: (variables: { title: string }) => addPost(variables),3 onSuccess: (data) => console.log(data),4})subscribe()
1subscribe(listener: MutationObserverListener): () => void;定义于:packages/query-core/src/subscribable.ts:28
注册一个监听器,使其在该对象通知每次更新时被调用。返回一个用于移除该监听器的函数——调用它即可停止监听。基类自身永远不会主动丢弃监听器,但某些子类会在 destroy() 中清空全部监听器。
参数
listener
MutationObserverListener
每次更新时被调用,参数为子类传递给其订阅者的任意值。
返回值
一个用于移除监听器的函数。
() => void
示例
1const unsubscribe = subscribable.subscribe(() => {2 // react to the update3})4 5unsubscribe()继承自
1Subscribable.subscribe