框架
版本

MutationCache

The MutationCache 是 mutation 的存储。

通常,您不会直接与 MutationCache 交互,而是使用 QueryClient

tsx
import { MutationCache } from '@tanstack/react-query'

const mutationCache = new MutationCache({
  onError: (error) => {
    console.log(error)
  },
  onSuccess: (data) => {
    console.log(data)
  },
})
import { MutationCache } from '@tanstack/react-query'

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

其可用方法包括

选项

  • onError?: (error: unknown, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown
    • 可选
    • 如果某个 mutation 遇到错误,将调用此函数。
    • 如果从中返回 Promise,它将被等待
  • onSuccess?: (data: unknown, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown
    • 可选
    • 如果某个 mutation 成功,将调用此函数。
    • 如果从中返回 Promise,它将被等待
  • onSettled?: (data: unknown | undefined, error: unknown | null, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown
    • 可选
    • 如果某个 mutation 已 settled(成功或出错),将调用此函数。
    • 如果从中返回 Promise,它将被等待
  • onMutate?: (variables: unknown, mutation: Mutation) => Promise<unknown> | unknown
    • 可选
    • 在执行某个 mutation 之前,将调用此函数。
    • 如果从中返回 Promise,它将被等待

全局回调

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

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

mutationCache.getAll

getAll 返回缓存中的所有 mutation。

注意:这通常不是大多数应用程序所必需的,但在极少数情况下需要有关 mutation 的更多信息时,可能会派上用场

tsx
const mutations = mutationCache.getAll()
const mutations = mutationCache.getAll()

返回值

  • Mutation[]
    • 来自缓存的 Mutation 实例

mutationCache.subscribe

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

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

const unsubscribe = mutationCache.subscribe(callback)
const callback = (event) => {
  console.log(event.type, event.mutation)
}

const unsubscribe = mutationCache.subscribe(callback)

选项

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

返回值

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

mutationCache.clear

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

tsx
mutationCache.clear()
mutationCache.clear()