SuperAPI AI 工具集

tanstack-query-expert

前端与建站

查看项目

更新于 10-16 05:05

技能介绍

用途:该技能用于在 React 与 Next.js 应用中搭建或重构异步状态管理,替代 useEffect 与 useState 组合的数据获取逻辑。资料说明:当技术栈中已有 TanStack Query 时,不应再用 useEffect 获取数据。

主要能力:声明式数据获取、缓存失效、乐观 UI 更新、后台同步、错误边界以及服务端渲染注水模式;可配置全局或查询级别的 staleTime、gcTime 与重试行为;支持分页、同一数据的请求去重与加载/错误状态。

使用方式:将 useQuery 封装为自定义 Hook,使用基于数组且类型严格的查询键;大应用建议采用查询键工厂模式(如 issueKeys 的 all/list/detail)。变更数据时用 useMutation,并在 onSuccess 中调用 queryClient.invalidateQueries 触发后台重新获取;乐观更新使用 onMutate 取消进行中的请求、快照旧值并写入新值,onError 回滚,onSettled 再失效查询。Next.js App Router 中,在 Providers 内通过 useState 创建 QueryClient 并以 QueryClientProvider 包裹;服务端组件用 queryClient.prefetchQuery 预取,再通过 dehydrate 与 HydrationBoundary 传给客户端组件,客户端 useQuery 挂载时不会发起网络请求。

最佳实践:使用查询键工厂避免键名拼写不一致;为变化不频繁的数据设置全局 staleTime(默认 0,会导致每次组件重新挂载都后台重取);谨慎使用 setQueryData,优先 invalidateQueries;所有 useQuery 与 useMutation 抽象为自定义 Hook。不要将查询数据同步到本地 React state。

排障提示:网络请求无限循环时检查 queryFn 是否在返回前抛错(默认自动重试 3 次),调试时可设 retry: false;staleTime 决定何时触发后台重取,gcTime 决定组件卸载后非活跃数据在内存中保留多久,若 gcTime 小于 staleTime,数据会在变旧前被删除。

限制:资料未提供安装命令、具体依赖版本、收费或价格信息,也未说明平台要求;除 React 与 Next.js 及 TanStack Query 外,其余框架适配情况暂未提供。