译零 TransZero · TanStack Query 中文文档
主站

QueriesObserver

更新于 2026-11-02 Vue 查看英文原文 ↗

定义于:packages/query-core/src/queriesObserver.ts:64

QueriesObserver QueriesObserver 同时监听一组查询,将其暴露为一个单一的 QueryObserverResult 数组(或在提供 combine 选项时,暴露为由该数组派生出的组合值)。它为每个查询管理一个内部 QueryObserver,是框架适配器(例如 useQueries)构建其 Hook 的底层原语。

示例

TypeScript
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[]

构造函数

构造函数

TypeScript
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

QueryClient

queries

QueryObserverOptions<any, any, any, any, any, never>[]

options?

QueriesObserverOptions<TCombinedResult>

返回值

QueriesObserver<TCombinedResult>

覆盖

TypeScript
1Subscribable<QueriesObserverListener>.constructor

方法

destroy()

TypeScript
1destroy(): void;

定义于:packages/query-core/src/queriesObserver.ts:114

停止监听所有查询:清除全部监听器,并销毁该观察者所管理的每个底层 QueryObserver。

返回值

void


getCurrentResult()

TypeScript
1getCurrentResult(): QueryObserverResult[];

定义于:packages/query-core/src/queriesObserver.ts:219

返回最近一次计算出的 QueryObserverResult 数组,其中每个元素对应一个被监听的查询,顺序与传入构造函数或 setQueries 的查询顺序一致。

返回值

QueryObserverResult[]

当前结果。

示例

TypeScript
1const results = observer.getCurrentResult()2const data = results.map((result) => result.data)

getObservers()

TypeScript
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()

TypeScript
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 的方法 —— 立即同步地为给定(已默认化)的查询计算结果。该方法由框架适配器(例如 useQueries)在订阅前调用,返回一个三元组:各查询的原始结果、一个从这些结果计算组合值的函数,以及一个用于包装结果以支持属性访问追踪的函数。

参数

queries

QueryObserverOptions<unknown, Error, unknown, unknown, readonly unknown[], never>[]

待计算结果的查询的已默认化选项。

combine

CombineFn<TCombinedResult> | undefined

若返回的 combineResult 存在,则为其使用的 combine 函数。

返回值

[rawResult: QueryObserverResult[], combineResult: (r?: QueryObserverResult[]) => TCombinedResult, trackResult: () => QueryObserverResult[]]

一个三元组:各查询的结果、一个计算组合结果的函数,以及一个返回经属性访问追踪包装后的结果的函数。


getQueries()

TypeScript
1getQueries(): Query<unknown, Error, unknown, readonly unknown[]>[];

定义于:packages/query-core/src/queriesObserver.ts:228

返回当前正在被监听的底层 Query 实例,顺序与传入构造函数或 setQueries 的查询顺序一致。

返回值

Query<unknown, Error, unknown, readonly unknown[]>[]

被监听的查询。


hasListeners()

TypeScript
1hasListeners(): boolean;

定义于:packages/query-core/src/subscribable.ts:43

当至少有一个监听器已注册时返回 true;当所有监听器均已取消订阅时返回 false。

返回值

boolean

若至少有一个监听器已注册,则返回 true。

继承自

TypeScript
1Subscribable.hasListeners

setQueries()

TypeScript
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

示例

TypeScript
1observer.setQueries([2  { queryKey: ['post', 1], queryFn: fetchPost },3  { queryKey: ['post', 3], queryFn: fetchPost },4])

subscribe()

TypeScript
1subscribe(listener: QueriesObserverListener): () => void;

定义于:packages/query-core/src/subscribable.ts:28

注册一个监听器,使其在该对象通知每次更新时被调用。返回一个用于移除该监听器的函数 —— 调用它即可停止监听。基类自身永远不会主动丢弃监听器,但某些子类会在 destroy() 中清空全部监听器。

参数

listener

QueriesObserverListener

每次更新时被调用,接收子类传递给其订阅者的任意参数。

返回值

一个用于移除监听器的函数。

() => void

示例

TypeScript
1const unsubscribe = subscribable.subscribe(() => {2  // react to the update3})4 5unsubscribe()

继承自

TypeScript
1Subscribable.subscribe

本页为 TanStack Query 文档(Vue 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de