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

usePrefetchInfiniteQuery

更新于 2026-11-02 Vue 查看英文原文 ↗
TypeScript
1function usePrefetchInfiniteQuery<TQueryFnData = unknown, TError = Error, TData = InfiniteData<TQueryFnData, unknown>, TQueryKey extends readonly unknown[] = readonly unknown[], TPageParam = unknown>(options: MaybeRefOrGetter<MaybeRefDeep<UsePrefetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>>, queryClient?: QueryClient): void;

定义于:packages/vue-query/src/usePrefetchInfiniteQuery.ts:100

usePrefetchInfiniteQuery 不返回任何值 — 它以响应式副作用的形式触发一次预取(prefetch),适用于在实际使用 useInfiniteQuery 渲染数据的组件之前提前发起拉取。你可以向 usePrefetchInfiniteQuery 传入所有能传给 queryClient.infiniteQuery 的参数,但 queryKey、initialPageParam 和 getNextPageParam 始终为必填项;除非已定义默认查询函数,否则 queryFn 也为必填项。

getNextPageParam 接收无限数据列表的最后一页、全部页面组成的完整数组,以及 pageParam 信息,并应返回一个单一变量,该变量将作为 context.pageParam 传入你的查询函数。返回 undefined 或 null 表示当前无下一页可用。

若查询已存在任何缓存状态(包括此前尝试遗留的 pending/error 状态),则预取会被跳过,因此不会重新拉取已存在或正在拉取中的数据。当 options 中的任一响应式依赖(例如通过 infiniteQueryOptions 构建)发生变化时,预取会重新执行。

请在渲染期间、包裹使用 useInfiniteQuery 的 suspense() 的 Suspense 边界之前调用此函数 — 参见 Suspense 指南。

类型参数

TQueryFnData

TQueryFnData = unknown

TError

TError = Error

TData

TData = InfiniteData<TQueryFnData, unknown>

TQueryKey

TQueryKey extends readonly unknown[] = readonly unknown[]

TPageParam

TPageParam = unknown

参数

options

MaybeRefOrGetter<MaybeRefDeep<UsePrefetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>>

一个 ref、普通值或响应式 getter,用于解析出要使用的 UsePrefetchInfiniteQueryOptions — 即所有可传给 queryClient.infiniteQuery 的配置项。

queryClient?

QueryClient

使用此参数可指定自定义的 QueryClient;否则将使用 VueQueryPlugin 提供的默认实例。

返回值

void

示例

HTML
1<script setup lang="ts">2import { infiniteQueryOptions, usePrefetchInfiniteQuery } from '@tanstack/vue-query'3import Projects from './Projects.vue'45const projectsOptions = infiniteQueryOptions({6  queryKey: ['projects'],7  queryFn: ({ pageParam }) => fetchProjects(pageParam),8  initialPageParam: 0,9  getNextPageParam: (lastPage) => lastPage.nextId,10})1112// Fire the prefetch as soon as this component runs, before `Projects` mounts and calls `useInfiniteQuery`.13usePrefetchInfiniteQuery(projectsOptions)14</script>15 16<template>17  <Projects />18</template>

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

译自上游 59d11de