过滤器
Filters(过滤器)
在 TanStack Query 中,一些方法接受 QueryFilters
或 MutationFilters
对象。
Query Filters(查询过滤器)
查询过滤器是一个对象,其中包含用于匹配查询的特定条件:
// 取消所有查询
await queryClient.cancelQueries();
// 移除所有 `queryKey` 以 `posts` 开头的非活跃查询
queryClient.removeQueries({ queryKey: ["posts"], type: "inactive" });
// 重新获取所有活跃查询
await queryClient.refetchQueries({ type: "active" });
// 重新获取所有 `queryKey` 以 `posts` 开头的活跃查询
await queryClient.refetchQueries({ queryKey: ["posts"], type: "active" });
查询过滤器对象支持以下属性:
queryKey?: QueryKey
: 设置此属性以匹配特定的queryKey
。exact?: boolean
: 如果不想使用模糊匹配queryKey
,可以传入exact: true
,这样只会匹配完全相同的queryKey
。type?: 'active' | 'inactive' | 'all'
**(默认为'all'
)设为
'active'
将匹配活跃的查询。设为
'inactive'
将匹配非活跃的查询。
stale?: boolean
设为
true
时,将匹配过期查询。设为
false
时,将匹配新鲜查询。
fetchStatus?: FetchStatus
设为
'fetching'
将匹配当前正在获取数据的查询。设为
'paused'
将匹配本应获取数据但被暂停的查询。设为
'idle'
将匹配当前未获取数据的查询。
predicate?: (query: Query) => boolean
该谓词函数将作为最终过滤条件应用于所有匹配的查询。
如果未指定其他过滤条件,该函数将对缓存中的所有查询进行评估。
Mutation Filters(变更过滤器)
变更过滤器是一个对象,其中包含用于匹配变更的特定条件:
// 获取所有正在获取数据的 mutation 数量
await queryClient.isMutating();
// 通过 mutationKey 过滤 mutations
await queryClient.isMutating({ mutationKey: ["post"] });
// 通过谓词函数过滤 mutations
await queryClient.isMutating({
predicate: (mutation) => mutation.state.variables?.id === 1,
});
变更过滤器对象支持以下属性:
mutationKey?: MutationKey
: 设置此属性以匹配特定的mutationKey
。exact?: boolean
: 如果不想使用模糊匹配mutationKey
,可以传入exact: true
,这样只会匹配完全相同的mutationKey
。status?: MutationStatus
: 允许根据mutation
的状态进行过滤。predicate?: (mutation: Mutation) => boolean
该谓词函数将作为最终过滤条件应用于所有匹配的
mutation
。如果未指定其他过滤条件,该函数将对缓存中的所有
mutation
进行评估。
Utils(工具函数)
matchQuery
const isMatching = matchQuery(filters, query);
返回一个布尔值,指示某个查询是否符合提供的 queryFilters
过滤条件。
matchMutation
const isMatching = matchMutation(filters, mutation);
返回一个布尔值,指示某个变更是否符合提供的 mutationFilters
过滤条件。
最后更新于
这有帮助吗?