Agent Skills
返回列表
TanStack Query 数据获取实践

TanStack Query 数据获取实践

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-fec-data-fetching。

技能介绍

要解决什么问题

React 里常见写法是 useEffect 拉接口,再自己维护 loading、error、重复请求和「改完数据要不要重拉」——逻辑散在组件里,分页、去重和 mutation 后的缓存一致性尤其容易踩坑。

技能如何组织工作流

本技能把 TanStack Query 当作服务端状态的默认方案,并给出可执行的决策与步骤:

  • 先分状态来源:数据来自服务端且需要缓存、去重、刷新、分页或 mutation 时用 Query;纯本地 UI 用 useState/store。
  • 搭好 QueryClientProvider:按业务新鲜度配置 staleTime、gcTime、retry 与窗口聚焦刷新。
  • 设计稳定 query key:数组结构包含实体、动作及所有影响结果的参数。
  • API 层保持纯请求,Query hook 负责缓存、select 以及 loading/error/empty。
  • mutation 后做 invalidation;需要即时反馈时用 optimistic update,并在 onError 回滚快照。

进阶主题(默认配置、无限滚动、预取、SSR 水合、API 整合)指向 references/query-patterns.md。

边界与注意点

相同数据必须复用相同 query key,参数缺失会导致缓存串读。staleTime 过长会展示旧数据,过短则请求过频。Query 不管理 modal、输入框等本地 UI 状态,勿写入 query cache。Next.js App Router 做 SSR 时需 dehydrate / HydrationBoundary。

使用场景

  • 把列表页从 useEffect + setState 迁到 Query,需要统一 loading/error/空态并避免重复请求
  • 设计带分页、筛选参数的接口缓存,要求 query key 稳定且不同条件不会串读
  • 表单提交或删除后要在 mutation 成功时失效相关列表,必要时做乐观更新并在失败回滚
  • Next.js App Router 页面首屏要 SSR 预取数据,并在客户端用 HydrationBoundary 接上 Query 缓存

适合人员

  • 维护 React 业务页、正在清理散落 useEffect 请求逻辑的前端工程师
  • 要定团队数据获取规范(key 约定、staleTime、mutation 失效)的前端或全栈负责人
  • 在 Next.js App Router 项目里做 SSR/水合并整合 API 层的全栈开发者
  • 负责 CRUD 列表与详情联动、担心改完数据界面不同步的产品型前端