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

queryOptions

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

概述

TypeScript
1function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;2function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>): UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;3function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;

另请参阅:参数 · 返回值

调用签名

TypeScript
1function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;

定义于:packages/angular-query-experimental/src/query-options.ts:149

你通常可以向 queryOptions 传入所有能传给 injectQuery 的参数。这些选项可在函数与命令式 API(例如 queryClient.fetchQuery)之间共享。options.queryKey 是必需的,它指定了用于生成选项的查询键。

当 initialData 已知被定义时,将选择此重载,因此生成的 data 永远不会是 undefined(除非某个 select 将 TData 更改为包含 undefined)。

类型参数

TQueryFnData

TQueryFnData = unknown

TError

TError = Error

TData

TData = TQueryFnData

TQueryKey

TQueryKey extends readonly unknown[] = readonly unknown[]

参数

options

DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>

要使用的 DefinedInitialDataOptions —— 即所有可传给 injectQuery 的参数,且 initialData 已知被定义。

返回值

DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>

相同选项对象,其类型经过增强,使 queryKey 携带推断出的数据类型。

参见

示例

angular-ts
1import { queryOptions, injectQuery } from '@tanstack/angular-query-experimental'2 3export const postsOptions = queryOptions({4  queryKey: ['posts'],5  queryFn: fetchPosts,6  initialData: [],7})8 9@Component({10  selector: 'posts',11  template: `12    <!-- `postsQuery.data()` is never `undefined`, thanks to `initialData` — even if a refetch13    fails, so the list stays visible alongside the error. -->14    @if (postsQuery.isError()) {15      <span>Error: {{ postsQuery.error()?.message }}</span>16    }17    <ul>18      @for (post of postsQuery.data(); track post.id) {19        <li>{{ post.title }}</li>20      }21    </ul>22  `,23})24export class Posts {25  readonly postsQuery = injectQuery(() => postsOptions)26}

调用签名

TypeScript
1function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>): UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;

定义于:packages/angular-query-experimental/src/query-options.ts:196

你通常可以向 queryOptions 传入所有能传给 injectQuery 的参数。这些选项可在函数与命令式 API(例如 queryClient.fetchQuery)之间共享。options.queryKey 是必需的,它指定了用于生成选项的查询键。

类型参数

TQueryFnData

TQueryFnData = unknown

TError

TError = Error

TData

TData = TQueryFnData

TQueryKey

TQueryKey extends readonly unknown[] = readonly unknown[]

参数

options

UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>

要使用的 UnusedSkipTokenOptions —— 即所有可传给 injectQuery 的参数。

返回值

UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>

相同选项对象,其类型经过增强,使 queryKey 携带推断出的数据类型。

参见

示例

参数化工厂,以便每个 id 均可复用同一选项对象:

angular-ts
1import { queryOptions, injectQuery } from '@tanstack/angular-query-experimental'2 3export const postOptions = (id: string) =>4  queryOptions({5    queryKey: ['post', id],6    queryFn: () => fetchPost(id),7  })8 9@Component({10  selector: 'post',11  template: `12    @if (postQuery.isPending()) {13      Loading...14    } @else if (postQuery.isError()) {15      <span>Error: {{ postQuery.error()?.message }}</span>16    } @else {17      <h1>{{ postQuery.data().title }}</h1>18    }19  `,20})21export class Post {22  readonly id = signal('1')23  readonly postQuery = injectQuery(() => postOptions(this.id()))24}

调用签名

TypeScript
1function queryOptions<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends readonly unknown[] = readonly unknown[]>(options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>;

定义于:packages/angular-query-experimental/src/query-options.ts:274

你通常可以向 queryOptions 传入所有能传给 injectQuery 的参数。这些选项可在函数与命令式 API(例如 queryClient.fetchQuery)之间共享。options.queryKey 是必需的,它指定了用于生成选项的查询键。

类型参数

TQueryFnData

TQueryFnData = unknown

TError

TError = Error

TData

TData = TQueryFnData

TQueryKey

TQueryKey extends readonly unknown[] = readonly unknown[]

参数

options

UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>

要使用的 UndefinedInitialDataOptions —— 即所有可传给 injectQuery 的参数。

返回值

UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>

相同选项对象,其类型经过增强,使 queryKey 携带推断出的数据类型。

备注

这是唯一接受 queryFn: skipToken 的重载,如下所示。

参见

示例

参数化工厂,以便每个 id 均可复用同一选项对象:

angular-ts
1import { queryOptions, injectQuery } from '@tanstack/angular-query-experimental'2 3export const postOptions = (id: string) =>4  queryOptions({5    queryKey: ['post', id],6    queryFn: () => fetchPost(id),7  })8 9@Component({10  selector: 'post',11  template: `12    @if (postQuery.isPending()) {13      Loading...14    } @else if (postQuery.isError()) {15      <span>Error: {{ postQuery.error()?.message }}</span>16    } @else {17      <h1>{{ postQuery.data().title }}</h1>18    }19  `,20})21export class Post {22  readonly id = signal('1')23  readonly postQuery = injectQuery(() => postOptions(this.id()))24}

禁用查询的工厂,类型安全,直到 postId 被设置:

angular-ts
1import { queryOptions, skipToken, injectQuery } from '@tanstack/angular-query-experimental'2 3export const postOptions = (postId: number | undefined) =>4  queryOptions({5    queryKey: ['post', postId],6    queryFn: postId != null ? () => fetchPost(postId) : skipToken,7  })8 9@Component({10  selector: 'post',11  template: `12    @if (postId() == null) {13      Select a post14    } @else if (postQuery.isPending()) {15      Loading...16    } @else if (postQuery.isError()) {17      <span>Error: {{ postQuery.error()?.message }}</span>18    } @else {19      <h1>{{ postQuery.data().title }}</h1>20    }21  `,22})23export class Post {24  readonly postId = signal<number | undefined>(undefined)25  readonly postQuery = injectQuery(() => postOptions(this.postId()))26}

参数

options

UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>

要使用的 UndefinedInitialDataOptions —— 即所有可传给 injectQuery 的参数。

options 属性

基于 CreateQueryOptions 构建。参见上方类型定义以了解其变更内容。

返回值

UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & QueryKeyWithDataTag<TQueryKey, TQueryFnData, TError>

相同选项对象,其类型经过增强,使 queryKey 携带推断出的数据类型。

返回值属性

基于 CreateQueryOptions、QueryKeyWithDataTag 构建。参见上方类型定义以了解其变更内容。

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

译自上游 59d11de