QueriesObserver
定义于:packages/query-core/src/queriesObserver.ts:64
QueriesObserver 同时观察一组查询,将其暴露为一个单一的 QueryObserverResult(查询观察者结果)数组(或者,当提供 combine 选项时,暴露为由该数组派生出的组合值)。它为每个查询管理一个内部 QueryObserver,是框架适配器(例如 @tanstack/react-query)构建其 Hook 的底层原语。
示例
1const observer = new QueriesObserver(queryClient, [2 { queryKey: ['post', 1], queryFn: fetchPost },3 { queryKey: ['post', 2], queryFn: fetchPost },4])5 6const unsubscribe = observer.subscribe((result) => {7 console.log(result)8})继承自
Subscribable<QueriesObserverListener>
类型参数
TCombinedResult
TCombinedResult = QueryObserverResult[]
构造函数
构造函数
1new QueriesObserver<TCombinedResult = QueryObserverResult[]>(2 client: QueryClient, 3 queries: QueryObserverOptions<any, any, any, any, any, never>[], 4 options?: QueriesObserverOptions<TCombinedResult>5): QueriesObserver<TCombinedResult>;定义于:packages/query-core/src/queriesObserver.ts:78
参数
client
queries
QueryObserverOptions<any, any, any, any, any, never>[]
options?
QueriesObserverOptions<TCombinedResult>
返回值
QueriesObserver<TCombinedResult>
覆盖
1Subscribable<QueriesObserverListener>.constructor方法
destroy()
1destroy(): void;定义于:packages/query-core/src/queriesObserver.ts:114
停止观察所有查询:清除全部监听器,并销毁该观察者所管理的每个底层 QueryObserver。
返回值
void
getCurrentResult()
1getCurrentResult(): QueryObserverResult[];定义于:packages/query-core/src/queriesObserver.ts:219
返回最近一次计算出的 QueryObserverResult 数组,其中每个结果对应一个被观察的查询,顺序与传入构造函数或 setQueries 的查询顺序一致。
返回值
当前结果。
示例
1const results = observer.getCurrentResult()2const data = results.map((result) => result.data)getObservers()
1getObservers(): QueryObserver<unknown, Error, unknown, unknown, readonly unknown[]>[];定义于:packages/query-core/src/queriesObserver.ts:238
返回该观察者所管理的底层 QueryObserver 实例,顺序与传入构造函数或 setQueries 的查询顺序一致。
返回值
QueryObserver<unknown, Error, unknown, unknown, readonly unknown[]>[]
被管理的查询观察者。
getOptimisticResult()
1getOptimisticResult(queries: QueryObserverOptions<unknown, Error, unknown, unknown, readonly unknown[], never>[], combine: CombineFn<TCombinedResult> | undefined): [rawResult: QueryObserverResult[], combineResult: (r?: QueryObserverResult[]) => TCombinedResult, trackResult: () => QueryObserverResult[]];定义于:packages/query-core/src/queriesObserver.ts:253
QueriesObserver 对应于 QueryObserver#getOptimisticResult 的方法 —— 立即同步地为给定(已默认化)的查询计算结果。该方法由框架适配器(例如 @tanstack/react-query)在订阅前调用,返回一个元组,包含:原始的逐查询结果、一个从这些结果计算组合结果的函数,以及一个用于包装结果以支持属性访问追踪的函数。
参数
queries
QueryObserverOptions<unknown, Error, unknown, unknown, readonly unknown[], never>[]
待计算结果的查询的默认化选项。
combine
CombineFn<TCombinedResult> | undefined
若返回的 combine 函数存在,则为其使用的 combine 函数。
返回值
[rawResult: QueryObserverResult[], combineResult: (r?: QueryObserverResult[]) => TCombinedResult, trackResult: () => QueryObserverResult[]]
一个元组,包含逐查询结果、计算组合结果的函数,以及返回经属性访问追踪包装后的结果的函数。
getQueries()
1getQueries(): Query<unknown, Error, unknown, readonly unknown[]>[];定义于:packages/query-core/src/queriesObserver.ts:228
返回当前正在被观察的底层 Query 实例,顺序与传入构造函数或 setQueries 的查询顺序一致。
返回值
Query<unknown, Error, unknown, readonly unknown[]>[]
被观察的查询。
hasListeners()
1hasListeners(): boolean;定义于:packages/query-core/src/subscribable.ts:43
当至少有一个监听器已注册时返回 true;所有监听器均已取消订阅后返回 false。
返回值
boolean
至少有一个监听器已注册时返回 true。
继承自
1Subscribable.hasListenerssetQueries()
1setQueries(queries: QueryObserverOptions<unknown, Error, unknown, unknown, readonly unknown[], never>[], options?: QueriesObserverOptions<TCombinedResult>): void;定义于:packages/query-core/src/queriesObserver.ts:136
替换当前被观察的查询集合。对于匹配已有被观察查询哈希的查询,复用其现有的 QueryObserver;对不再存在的查询,销毁其观察者;对新添加的查询,创建并订阅新的观察者。
参数
queries
QueryObserverOptions<unknown, Error, unknown, unknown, readonly unknown[], never>[]
待观察的查询选项。
options?
QueriesObserverOptions<TCombinedResult>
替换观察者的选项,例如其 combine 函数。
返回值
void
示例
1observer.setQueries([2 { queryKey: ['post', 1], queryFn: fetchPost },3 { queryKey: ['post', 3], queryFn: fetchPost },4])subscribe()
1subscribe(listener: QueriesObserverListener): () => void;定义于:packages/query-core/src/subscribable.ts:28
注册一个监听器,使其在该对象通知每次更新时被调用。返回一个用于移除该监听器的函数 —— 调用它即可停止监听。基类自身永远不会主动丢弃监听器,但某些子类会在 destroy 中清空全部监听器。
参数
listener
QueriesObserverListener
每次更新时被调用,参数为子类传递给其订阅者的任意值。
返回值
一个用于移除监听器的函数。
() => void
示例
1const unsubscribe = subscribable.subscribe(() => {2 // react to the update3})4 5unsubscribe()继承自
1Subscribable.subscribe