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

createQueries

更新于 2026-11-02 Svelte 查看英文原文 ↗
TypeScript
1function createQueries<T extends any[], TCombinedResult = T extends [] ? [] : T extends [Head] ? [GetCreateQueryResult<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<Head>, GetCreateQueryResult<Head>] : [...Tails[]] extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<Head>, GetCreateQueryResult<Head>, GetCreateQueryResult<Head>] : [...Tails[]] extends [Head, ...Tails[]] ? [...(...)[]] extends [] ? [] : ... extends ... ? ... : ... : [...{ [K in (...)]: (...) }[]] : [...{ [K in string | number | symbol]: GetCreateQueryResult<Tails[K]> }[]] : { [K in string | number | symbol]: GetCreateQueryResult<T[K]> }>(createQueriesOptions: Accessor<{2  combine?: (result: T extends [] ? [] : T extends [Head] ? [GetCreateQueryResult<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<...>, GetCreateQueryResult<...>] : [...(...)[]] extends [..., ...(...)[]] ? ... extends ... ? ... : ... : [...(...)[]] : { [K in string | number | symbol]: GetCreateQueryResult<T[K]> }) => TCombinedResult;3  queries:   | readonly [T extends [] ? [] : T extends [Head] ? [GetCreateQueryOptionsForCreateQueries<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryOptionsForCreateQueries<...>, GetCreateQueryOptionsForCreateQueries<...>] : [...(...)[]] extends [..., ...(...)[]] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : readonly unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[] ? CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[] : CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[]]4     | readonly [{ [K in string | number | symbol]: GetCreateQueryOptionsForCreateQueries<T[K]> }];5}>, queryClient?: Accessor<QueryClient>): TCombinedResult;

定义于:packages/svelte-query/src/createQueries.svelte.ts:259

createQueries 函数可用于拉取可变数量的查询。

类型参数

T

T extends any[]

TCombinedResult

TCombinedResult = T extends [] ? [] : T extends [Head] ? [GetCreateQueryResult<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<Head>, GetCreateQueryResult<Head>] : [...Tails[]] extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<Head>, GetCreateQueryResult<Head>, GetCreateQueryResult<Head>] : [...Tails[]] extends [Head, ...Tails[]] ? [...(...)[]] extends [] ? [] : ... extends ... ? ... : ... : [...{ [K in (...)]: (...) }[]] : [...{ [K in string | number | symbol]: GetCreateQueryResult<Tails[K]> }[]] : { [K in string | number | symbol]: GetCreateQueryResult<T[K]> }

参数

createQueriesOptions

Accessor<{ combine?: (result: T extends [] ? [] : T extends [Head] ? [GetCreateQueryResult<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryResult<...>, GetCreateQueryResult<...>] : [...(...)[]] extends [..., ...(...)[]] ? ... extends ... ? ... : ... : [...(...)[]] : { [K in string | number | symbol]: GetCreateQueryResult<T[K]> }) => TCombinedResult; queries: | readonly [T extends [] ? [] : T extends [Head] ? [GetCreateQueryOptionsForCreateQueries<Head>] : T extends [Head, ...Tails[]] ? [...Tails[]] extends [] ? [] : [...Tails[]] extends [Head] ? [GetCreateQueryOptionsForCreateQueries<...>, GetCreateQueryOptionsForCreateQueries<...>] : [...(...)[]] extends [..., ...(...)[]] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : readonly unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[] ? CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[] : CreateQueryOptionsForCreateQueries<..., ..., ..., ...>[]] | readonly [{ [K in string | number | symbol]: GetCreateQueryOptionsForCreateQueries<T[K]> }]; }>

要运行的 queries 数组,以及一个可选的 combine 函数;该函数被包裹在 Accessor 中,以便选项可响应式更新。

queryClient?

Accessor<QueryClient>

使用此参数指定自定义 QueryClient。否则将使用最近上下文中的 QueryClient。

返回值

TCombinedResult

一个数组,其中每个元素对应一个查询的结果,顺序与 queries 相同;若提供了 combine,则返回 combine 的返回值。

示例

svelte
1<script lang="ts">2  import { createQueries } from '@tanstack/svelte-query'3 4  let { ids }: { ids: Array<number> } = $props()5 6  const postQueries = createQueries(() => ({7    queries: ids.map((id) => ({8      queryKey: ['post', id],9      queryFn: () => fetchPost(id),10      staleTime: Infinity,11    })),12  }))13</script>14 15<ul>16  {#each postQueries as query, index (ids[index])}17    {#if query.isPending}18      <li>Loading...</li>19    {:else if query.isError}20      <li>Error: {query.error.message}</li>21    {:else}22      <li>{query.data.title}</li>23    {/if}24  {/each}25</ul>

将结果合并为单个值:

svelte
1<script lang="ts">2  import { createQueries } from '@tanstack/svelte-query'3 4  let { ids }: { ids: Array<number> } = $props()5 6  const combined = createQueries(() => ({7    queries: ids.map((id) => ({8      queryKey: ['post', id],9      queryFn: () => fetchPost(id),10    })),11    combine: (postQueries) => ({12      data: postQueries.map((query) => query.data),13      isPending: postQueries.some((query) => query.isPending),14      isError: postQueries.some((query) => query.isError),15    }),16  }))17</script>18 19{#if combined.isPending}20  Loading...21{:else if combined.isError}22  Error loading posts23{:else}24  <ul>25    {#each combined.data as post}26      <li>{post?.title}</li>27    {/each}28  </ul>29{/if}

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

译自上游 59d11de