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

CreateBaseQueryOptions

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

定义于:packages/angular-query-experimental/src/types.ts:33

在 angular-query-experimental 的所有查询函数中共享的选项。它直接继承自 @tanstack/query-core 中的 QueryObserverOptions —— 与 react-query 不同,angular-query-experimental 此处不包含任何额外的框架特定选项。

继承自

类型参数

TQueryFnData

TQueryFnData = unknown

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

TError

TError = DefaultError

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

TData

TData = TQueryFnData

经过 select 处理后 data 最终呈现的类型。若未使用 select,则默认为 TQueryFnData。

TQueryData

TQueryData = TQueryFnData

查询缓存中实际存储的数据类型 —— 即 select 和 placeholderData 的输入类型。默认值为 TQueryFnData,通常也与 TQueryFnData 相同。

TQueryKey

TQueryKey extends QueryKey = QueryKey

你的 queryKey 的类型。

属性

属性 类型 默认值 描述
enabled? | false | true | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean) true 将此值设为 false 或一个返回 false 的函数,即可禁用查询挂载或查询键变更时的自动重新拉取。要手动重新拉取查询,请使用 refetch 方法(该方法由 useQuery 实例返回)。接受布尔值或返回布尔值的函数。
gcTime? number undefined 未使用/非活跃缓存数据在内存中保留的毫秒数。当某个查询的缓存变为未使用或非活跃状态后,该缓存数据将在该持续时间后被垃圾回收。若指定了多个不同的垃圾回收时间,则采用最长的那个。将其设为 Infinity 将禁用垃圾回收。默认值为 5 * 60 * 1000(5 分钟),服务端渲染(SSR)期间则为 Infinity。注意:最大允许时间为约 24 天,这是由 setTimeout 的 32 位有符号整数延时限制所致——参见 timeoutManager.setTimeoutProvider 获取变通方案。
initialData? TQueryData | (() => TQueryData | undefined) undefined 若设置该值,它将作为查询缓存的初始数据(前提是该查询尚未创建或缓存)。若设为函数,则该函数将在共享/根查询初始化期间仅执行一次,且需同步返回初始数据。默认情况下,初始数据被视为过期,除非已设置 staleTime。initialData 会被持久化到缓存中。
initialDataUpdatedAt? number | (() => number | undefined) undefined 若设置该值,它将作为 initialData 本身最后一次更新的时间(单位:毫秒)。
maxPages? number undefined 无限查询的数据中最多存储的页数。
meta? Record<string, unknown> undefined 存储在每个查询上的额外负载。可利用该属性传递可在其他位置使用的附加信息。
networkMode? "online" | "always" | "offlineFirst" 'online' 控制查询是否可根据当前网络连接状态运行。详见 网络模式。
notifyOnChangeProps? | ( | "error" | "data" | "isError" | "isPending" | "isLoading" | "isLoadingError" | "isRefetchError" | "isSuccess" | "isPlaceholderData" | "status" | "dataUpdatedAt" | "errorUpdatedAt" | "failureCount" | "failureReason" | "errorUpdateCount" | "isFetched" | "isFetchedAfterMount" | "isFetching" | "isInitialLoading" | "isPaused" | "isRefetching" | "isStale" | "isEnabled" | "refetch" | "fetchStatus" | "fetchNextPage" | "fetchPreviousPage" | "hasNextPage" | "hasPreviousPage" | "isFetchNextPageError" | "isFetchingNextPage" | "isFetchPreviousPageError" | "isFetchingPreviousPage")[] | "all" | (() => | "all" | ( | "error" | "data" | "isError" | "isPending" | "isLoading" | "isLoadingError" | "isRefetchError" | "isSuccess" | "isPlaceholderData" | "status" | "dataUpdatedAt" | "errorUpdatedAt" | "failureCount" | "failureReason" | "errorUpdateCount" | "isFetched" | "isFetchedAfterMount" | "isFetching" | "isInitialLoading" | "isPaused" | "isRefetching" | "isStale" | "isEnabled" | "refetch" | "fetchStatus" | "fetchNextPage" | "fetchPreviousPage" | "hasNextPage" | "hasPreviousPage" | "isFetchNextPageError" | "isFetchingNextPage" | "isFetchPreviousPageError" | "isFetchingPreviousPage")[] | undefined) undefined 若设置该值,组件仅在所列属性发生变更时重新渲染。设为 ['data', 'error'] 时,组件仅在 data 或 error 属性变更时重新渲染;设为 'all' 时,组件将在任意查询更新时重新渲染;设为函数时,该函数将被执行以计算属性列表。默认值为 undefined,此时会自动追踪属性访问,组件仅在任一被追踪属性变更时重新渲染。
persister? (queryFn: (context: object) => TQueryFnData | Promise<TQueryFnData>, context: object, query: Query) => TQueryFnData | Promise<TQueryFnData> undefined 此选项可用于将查询结果持久化至外部存储,从而绕过实际调用 queryFn 的需要。适用于跨服务端/客户端边界持久化查询数据等场景。
placeholderData? | NonFunctionGuard<TQueryData> | ((previousData: NonFunctionGuard<TQueryData> | undefined, previousQuery: | Query<NonFunctionGuard<TQueryData>, TError, NonFunctionGuard<TQueryData>, TQueryKey> | undefined) => NonFunctionGuard<TQueryData> | undefined) undefined 若设置该值,它将作为此特定查询观察者在查询仍处于 loading 数据状态且未提供 initialData 时所使用的占位数据。
queryFn? | typeof skipToken | ((context: object) => TQueryFnData | Promise<TQueryFnData>) undefined 查询用于请求数据的函数。除非已通过 queryClient.setQueryDefaults 或 queryClient.setDefaultOptions 设置了默认查询函数,否则该函数为必需项。接收一个 QueryFunctionContext。必须返回一个 Promise,该 Promise 要么解析出数据,要么抛出错误。数据不能为 undefined。
queryHash? string undefined queryKey 的哈希形式,使用 queryKeyHashFn(或默认哈希函数)计算得出。该值在内部用作实际缓存键。
queryKey TQueryKey & object undefined 此查询所用的查询键。查询键将被哈希为稳定哈希值。更多信息请参阅 查询键。只要 enabled 未设为 false,该键变更时查询将自动更新。
queryKeyHashFn? (queryKey: TQueryKey) => string undefined 若指定,该函数将用于对 queryKey 进行哈希并生成字符串。
refetchInterval? | number | false | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => number | false | undefined) false 若设为数字,查询将以该毫秒频率持续重新拉取;若设为函数,该函数将使用最新数据和查询来计算频率。
refetchIntervalInBackground? boolean false 若设为 true,查询将在其所在标签页/窗口处于后台时继续重新拉取。
refetchOnMount? | boolean | "always" | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean | "always") true 若设为 true,查询在挂载时若数据已过期则会重新拉取;若设为 false,将禁用额外查询实例触发后台重新拉取;若设为 'always',查询在挂载时总会重新拉取(除非使用 staleTime: 'static');若设为函数,该函数将使用最新数据和查询来计算该值。
refetchOnReconnect? | boolean | "always" | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean | "always") undefined 若设为 true,查询在网络重连且数据已过期时将重新拉取;若设为 false,查询在网络重连时不会重新拉取;若设为 'always',查询在网络重连时总会重新拉取(除非使用 staleTime: 'static');若设为函数,该函数将使用最新数据和查询来计算该值。默认值为 true,除非 networkMode 为 'always'。
refetchOnWindowFocus? | boolean | "always" | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean | "always") true 若设为 true,查询在窗口获得焦点且数据已过期时将重新拉取;若设为 false,查询在窗口获得焦点时不会重新拉取;若设为 'always',查询在窗口获得焦点时总会重新拉取(除非使用 staleTime: 'static');若设为函数,该函数将使用最新数据和查询来计算该值。
retry? | number | false | true | ((failureCount: number, error: TError) => boolean) undefined 若为 false,失败的查询默认不重试;若为 true,失败的查询将无限重试;若设为整数(例如 3),失败的查询将重试直至失败次数达到该数值;若设为函数 (failureCount, error) => boolean,失败的查询将重试直至该函数返回 false。客户端默认为 3,服务端默认为 0。
retryDelay? number | ((failureCount: number, error: TError) => number) undefined 该函数接收一个 retryAttempt 整数和实际 Error,并返回下次尝试前应延迟的毫秒数。类似 attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000) 的函数应用指数退避策略;类似 attempt => attempt * 1000 的函数应用线性退避策略。默认函数应用指数退避策略,上限为 30 秒。
retryOnMount? | false | true | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean) true 若设为 false,包含错误的查询在挂载时将不重试;若设为函数,该函数将使用查询来计算该值。
select? (data: TQueryData) => TData undefined 此选项可用于转换或选取查询函数返回数据的一部分。它影响返回的 data 值,但不影响存储在查询缓存中的内容。select 函数仅在 data 发生变更或 select 函数自身引用发生变更时执行。为优化性能,请对函数进行记忆化处理,使其引用在多次调用间保持稳定。
staleTime? | number | "static" | ((query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => number | "static") 0 数据被视为过期前的毫秒数。若设为 Infinity,数据将永不被视为过期;若设为 'static',数据将永不被视为过期;若设为函数,该函数将使用查询来计算 staleTime。
structuralSharing? boolean | ((oldData: unknown, newData: unknown) => unknown) true 设为 false 可禁用查询结果之间的结构共享;设为函数时,该函数接收旧数据和新数据,并返回同类型解析后的数据,以实现自定义结构共享逻辑。
suspense? boolean false 若设为 true,查询将在 status === 'pending' 时挂起,并在 status === 'error' 时抛出错误。
throwOnError? | false | true | ((error: TError, query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean) false 是否应抛出错误而非设置 error 属性。若设为 true 或 suspense 为 true,所有错误都将抛出至错误边界;若设为 false 且 suspense 为 false,错误将作为状态返回;若设为函数,该函数将接收错误和查询,并应返回一个布尔值,指示是否应在错误边界中显示错误(true)或作为状态返回错误(false)。

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

译自上游 59d11de