框架
版本

过滤器

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

查询过滤器

查询过滤器是一个具有某些条件的对象,用于匹配查询:

tsx
// 取消所有查询
await queryClient.cancelQueries()

// 删除所有以 `posts` 开头的非活动查询
queryClient.removeQueries({ queryKey: ['posts'], type: 'inactive' })

// 重新获取所有活动查询
await queryClient.refetchQueries({ type: 'active' })

// 重新获取所有以 `posts` 开头的活动查询
await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })
// 取消所有查询
await queryClient.cancelQueries()

// 删除所有以 `posts` 开头的非活动查询
queryClient.removeQueries({ queryKey: ['posts'], type: 'inactive' })

// 重新获取所有活动查询
await queryClient.refetchQueries({ type: 'active' })

// 重新获取所有以 `posts` 开头的活动查询
await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })

查询过滤器对象支持以下属性:

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

变更过滤器

变更过滤器是一个具有某些条件的对象,用于匹配变更:

tsx
// 获取所有正在进行的变更数量
await queryClient.isMutating()

// 按变更键过滤变更
await queryClient.isMutating({ mutationKey: ['post'] })

// 使用谓词函数过滤变更
await queryClient.isMutating({
  predicate: (mutation) => mutation.state.variables?.id === 1,
})
// 获取所有正在进行的变更数量
await queryClient.isMutating()

// 按变更键过滤变更
await queryClient.isMutating({ mutationKey: ['post'] })

// 使用谓词函数过滤变更
await queryClient.isMutating({
  predicate: (mutation) => mutation.state.variables?.id === 1,
})

变更过滤器对象支持以下属性:

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

工具函数

matchQuery

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

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

matchMutation

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

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