关于 tanstack-query
面向开发者和编码 Agent 的 TanStack Query v5 实践指南,以 40 条优先级规则涵盖数据获取、缓存、变更和渲染。
主要功能
- 01八类共 40 条规则
- 02查询键与缓存指南
- 03变更和预取模式
- 04无限查询与 Suspense 指南
- 05错误处理与渲染优化
适用场景
- 01设计查询键与缓存设置
- 02重构变更和预取逻辑
- 03检查 Suspense、重试与渲染性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill tanstack-query安装后在 Claude Code 中输入/tanstack-query确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdreferences/_sections.mdcache-enabled-option.mdcache-global-defaults.mdcache-invalidation-precision.mdcache-placeholder-vs-initial.mdcache-refetch-triggers.mdcache-staletime-gctime.mderror-conditional-retry.mderror-display-patterns.mderror-global-handler.mderror-retry-config.mderror-throw-on-error.mdinfinite-flatten-pages.mdinfinite-loading-states.mdinfinite-max-pages.mdinfinite-refetch-behavior.mdmutation-avoid-parallel.mdmutation-cancel-queries.mdmutation-invalidate-onsettled.mdmutation-optimistic-updates.mdmutation-setquerydata.mdprefetch-avoid-waterfalls.mdprefetch-flatten-api.mdprefetch-in-queryfn.mdprefetch-on-hover.mdprefetch-server-components.mdrender-notify-props.md详细介绍
TanStack Query 最佳实践
面向 TanStack Query v5 应用的全面性能优化指南。包含 8 个类别中的 40 条规则,并根据影响优先级排序,以指导自动重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 编写新的查询、变更或数据获取逻辑
- 实施缓存策略(staleTime、gcTime)
- 检查代码中的性能问题或请求瀑布流
- 重构现有的 TanStack Query 代码
- 实施无限查询、Suspense 或乐观更新
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 查询键结构 | CRITICAL | tquery- |
| 2 | 缓存配置 | CRITICAL | cache- |
| 3 | 变更模式 | HIGH | mutation- |
| 4 | 预取与瀑布流 | HIGH | prefetch- |
| 5 | 无限查询 | MEDIUM | infinite- |
| 6 | Suspense 集成 | MEDIUM | suspense- |
| 7 | 错误与重试处理 | MEDIUM | error- |
| 8 | 渲染优化 | LOW-MEDIUM | render- |
快速参考
1. 查询键结构(CRITICAL)
tquery-key-factories- 使用集中式查询键工厂tquery-hierarchical-keys- 按从通用到具体的顺序组织键tquery-always-arrays- 始终使用数组查询键tquery-serializable-objects- 在键中使用可序列化对象tquery-options-pattern- 使用 queryOptions 实现类型安全的共享tquery-colocate-keys- 将查询键与功能放在一起
2. 缓存配置(CRITICAL)
cache-staletime-gctime- 理解 staleTime 与 gcTime 的区别cache-global-defaults- 适当配置全局默认值cache-placeholder-vs-initial- 正确使用 placeholderData 与 initialDatacache-invalidation-precision- 精确地使缓存失效cache-refetch-triggers- 控制自动重新获取的触发条件cache-enabled-option- 使用 enabled 实现条件查询
3. 变更模式(HIGH)
mutation-optimistic-updates- 实施可回滚的乐观更新mutation-invalidate-onsettled- 在 onSettled 中使缓存失效,而不是在 onSuccess 中mutation-cancel-queries- 在乐观更新前取消查询mutation-setquerydata- 使用 setQueryData 立即更新缓存mutation-avoid-parallel- 避免对相同数据执行并行变更
4. 预取与瀑布流(HIGH)
prefetch-avoid-waterfalls- 避免请求瀑布流prefetch-on-hover- 在悬停时预取,提升感知速度prefetch-in-queryfn- 在 queryFn 中预取依赖数据prefetch-server-components- 在 Server Components 中预取prefetch-flatten-api- 扁平化 API 以减少瀑布流
5. 无限查询(MEDIUM)
infinite-max-pages- 使用 maxPages 限制无限查询的页数infinite-flatten-pages- 扁平化页面以便渲染infinite-refetch-behavior- 了解无限查询的重新获取行为infinite-loading-states- 正确处理无限查询的加载状态
6. Suspense 集成(MEDIUM)
suspense-use-suspense-hooks- 使用 Suspense 钩子简化加载状态处理suspense-error-boundaries- 始终将 Suspense 与 Error Boundaries 配合使用suspense-parallel-queries- 使用 useSuspenseQueries 组合 Suspense 查询suspense-boundaries-placement- 策略性地放置 Suspense 边界
7. 错误与重试处理(MEDIUM)
error-retry-config- 配置带指数退避的重试error-conditional-retry- 根据错误类型进行条件重试error-global-handler- 使用全局错误处理器处理常见错误error-display-patterns- 以恰当的方式显示错误error-throw-on-error- 将 throwOnError 与 Error Boundaries 配合使用
8. 渲染优化(低-中)
render-select-memoize- 对 select 函数进行记忆化render-select-derived- 使用 select 派生数据,减少重新渲染render-notify-props- 使用 notifyOnChangeProps 限制重新渲染render-structural-sharing- 了解结构共享render-tracked-props- 避免解构所有属性
如何使用
阅读各个参考文件,了解详细说明和代码示例:
- 章节定义 - 分类结构和影响级别
- 参考文件:
references/{prefix}-{slug}.md
每个参考文件都包含:
- 简要说明其重要性
- 错误的代码示例及说明
- 正确的代码示例及说明
- 补充背景信息和参考资料
相关技能
- 如需生成类型安全的查询钩子,请参阅
orval技能 - 如需在测试中模拟 API 响应,请参阅
test-msw技能 - 如需了解 React 19 数据获取模式,请参阅
react-19技能
完整编译文档
如需查看包含所有展开规则的完整指南:AGENTS.md
评论
支持 Markdown