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

UseQueryOptions

更新于 2026-11-02 Vue 查看英文原文 ↗
TypeScript
1type UseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = MaybeRef<{ [Property in keyof QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>]: Property extends "enabled" | "queryKey" ? QueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>[Property] : Property extends "queryFn" ? MaybeRefDeep<QueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>[Property] | SkipTokenForUseQuery> : MaybeRefDeep<QueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>[Property]> } & ShallowOption>;

定义于:packages/vue-query/src/queryOptions.ts:91

此类型为 queryOptions、useQuery 及其他查询 Hook 所接受的选项。enabled 会自动追踪响应式依赖,其形式可以是 ref、普通值或响应式 getter(() => ...)。queryKey 则通过 ref 或数组本身的响应式 getter 进行响应,也可将每个条目分别设为 ref 或响应式 getter。其余选项若以普通值形式传入,则仅在初始化时读取一次;若以 ref 或 computed 形式传入,则保持响应式。只有 enabled 和 queryKey 将函数视为 getter,因此 queryFn 通过 computed 响应:此处的函数即查询函数本身。

若你改为传入整个 options 对象的 getter(useQuery(() => ({ ... }))),则其中所有选项(包括 staleTime、retry 和 select)都会在该 getter 自身的响应式依赖发生变化时重新求值,因为整个对象会被重新计算。

select 仅在 data 发生变化,或 select 函数自身的引用发生变化时重新运行。由于 Vue setup() 函数在每个组件实例中仅执行一次,直接传给 queryOptions/useQuery 的内联 select 函数在响应式更新期间已具备稳定的引用。而若在整体 options getter 内创建内联 select,则每次该 getter 重新求值时都会重新创建该函数(因而其引用可能改变)。

类型参数

TQueryFnData

TQueryFnData = unknown

你的 queryFn 所解析出的数据类型。

TError

TError = DefaultError

你的 queryFn 可能抛出的错误类型。

TData

TData = TQueryFnData

data 经 select 处理后最终得到的数据类型。

TQueryData

TQueryData = TQueryFnData

缓存中存储的数据类型(在 select 运行之前)。默认为 TQueryFnData,且可独立于 TQueryFnData 单独配置。

TQueryKey

TQueryKey extends QueryKey = QueryKey

你的 queryKey 的类型。

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

译自上游 59d11de