Filters

TanStack Query 中的一些方法接受 QueryFiltersMutationFilters 对象。

Query 过滤器

query 过滤器是一个包含特定条件的对象,用于匹配 query

tsx
// Cancel all queries
await queryClient.cancelQueries()

// Remove all inactive queries that begin with `posts` in the key
queryClient.removeQueries({ queryKey: ['posts'], type: 'inactive' })

// Refetch all active queries
await queryClient.refetchQueries({ type: 'active' })

// Refetch all active queries that begin with `posts` in the key
await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })
// Cancel all queries
await queryClient.cancelQueries()

// Remove all inactive queries that begin with `posts` in the key
queryClient.removeQueries({ queryKey: ['posts'], type: 'inactive' })

// Refetch all active queries
await queryClient.refetchQueries({ type: 'active' })

// Refetch all active queries that begin with `posts` in the key
await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })

query 过滤器对象支持以下属性

  • queryKey?: QueryKey
    • 设置此属性以定义要匹配的 query key。
  • exact?: boolean
    • 如果您不想通过 query key 包含性地搜索 query,您可以传递 exact: true 选项,以仅返回具有您传递的确切 query key 的 query。
  • type?: 'active' | 'inactive' | 'all'
    • 默认为 all
    • 当设置为 active 时,它将匹配活动 query。
    • 当设置为 inactive 时,它将匹配非活动 query。
  • stale?: boolean
    • 当设置为 true 时,它将匹配陈旧的 query。
    • 当设置为 false 时,它将匹配最新的 query。
  • fetchStatus?: FetchStatus
    • 当设置为 fetching 时,它将匹配当前正在获取的 query。
    • 当设置为 paused 时,它将匹配想要获取但已 paused 的 query。
    • 当设置为 idle 时,它将匹配未获取的 query。
  • predicate?: (query: Query) => boolean
    • 此谓词函数将用作所有匹配 query 的最终过滤器。如果未指定其他过滤器,则将针对缓存中的每个 query 评估此函数。

Mutation 过滤器

mutation 过滤器是一个包含特定条件的对象,用于匹配 mutation

tsx
// Get the number of all fetching mutations
await queryClient.isMutating()

// Filter mutations by mutationKey
await queryClient.isMutating({ mutationKey: ['post'] })

// Filter mutations using a predicate function
await queryClient.isMutating({
  predicate: (mutation) => mutation.state.variables?.id === 1,
})
// Get the number of all fetching mutations
await queryClient.isMutating()

// Filter mutations by mutationKey
await queryClient.isMutating({ mutationKey: ['post'] })

// Filter mutations using a predicate function
await queryClient.isMutating({
  predicate: (mutation) => mutation.state.variables?.id === 1,
})

mutation 过滤器对象支持以下属性

  • mutationKey?: MutationKey
    • 设置此属性以定义要匹配的 mutation key。
  • exact?: boolean
    • 如果您不想通过 mutation key 包含性地搜索 mutation,您可以传递 exact: true 选项,以仅返回具有您传递的确切 mutation key 的 mutation。
  • status?: MutationStatus
    • 允许根据状态过滤 mutation。
  • predicate?: (mutation: Mutation) => boolean
    • 此谓词函数将用作所有匹配 mutation 的最终过滤器。如果未指定其他过滤器,则将针对缓存中的每个 mutation 评估此函数。

Utils

matchQuery

tsx
const isMatching = matchQuery(filters, query)
const isMatching = matchQuery(filters, query)

返回一个布尔值,指示 query 是否与提供的 query 过滤器集匹配。

matchMutation

tsx
const isMatching = matchMutation(filters, mutation)
const isMatching = matchMutation(filters, mutation)

返回一个布尔值,指示 mutation 是否与提供的 mutation 过滤器集匹配。