用途:在创建 TanStack Query 抽象时,指导如何组织查询逻辑,使同一份配置可被多种消费方复用。
主要能力与核心模式:优先使用 queryOptions 工厂作为基础抽象。hooks、loader、预取、suspense 查询和 QueryClient 调用都可以消费它。示例中通过 invoiceOptions(id) 返回 queryOptions({ queryKey, queryFn, staleTime }),再在其上构建 useInvoice(useQuery)与 useSuspenseInvoice(useSuspenseQuery)。也可在使用处组合一次性选项,例如展开 invoiceOptions(id) 后追加 select 与 throwOnError。
常见错误:一是把自定义 hook 当作唯一抽象,正确做法是先写 options 工厂再让 hook 调用它,因为自定义 hook 无法在路由 loader、服务端预取或事件处理器中运行,而 options 工厂可以。二是用宽泛的 UseQueryOptions 包装器破坏类型推断,正确做法是让 queryOptions 与使用处组合来保留 select 推断。三是包装器隐藏 Query 结果状态,除非抽象自行接管全部 loading、error 与 refetch 行为,否则应返回完整查询结果。
适用场景:需要跨组件、路由加载与服务端预取共享查询配置的 React 项目。
限制:资料未提供安装命令、版本要求、平台支持与收费信息。