本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 我每周大约会在 GitHub issues 和 Discord 里回答一次这个问题:「我应该用 TanStack 还是 React?」我的答案始终不变:这就好比问「我应该用燃油泵还是丰田?」TanStack 是一套库。React 是一个 UI 框架。你用 TanStack 的库来构建 React 应用。这篇文章,就是为了省得我下次再重复这个答案。
已核实来源:TanStack.com · React 文档 最后更新:2026-09-18 · 更新日志
TL;DR: TanStack 和 React 不是竞争对手。React 是框架。TanStack 是运行在 React 之上的数据层和 UI 层。「TanStack vs React」这个问题没有答案,因为它从一开始就问错了。真正的问题是:「我的 React 应用应该用哪些 TanStack 库?」
分类体系
React:用于构建基于组件的用户界面的 UI 框架。React 提供组件模型、虚拟 DOM 和渲染原语。React 不提供:路由、数据获取、表单处理、超出本地组件状态的状态管理,以及表格/滚动/虚拟化组件。
TanStack:一系列专注型库,用来填补 React 的空白:
| React 的缺口 | TanStack 库 | 功能 |
|---|---|---|
| 数据获取 + 缓存 | TanStack Query | 服务端状态管理、缓存、后台重新获取 |
| 路由 | TanStack Router | 带嵌套布局的类型安全路由 |
| 表单 | TanStack Form | 表单状态、验证和提交 |
| 表格 | TanStack Table | 无头表格 UI——你掌控渲染逻辑 |
| 虚拟滚动 | TanStack Virtual | 大数据集的虚拟化列表 |
| 通用状态 | TanStack Store | 轻量级响应式状态,用于非 UI 状态 |
| SSR 框架 | TanStack Start | 基于上述库构建的带 SSR 的元框架 |
每个 TanStack 库都要求 React 作为 peer dependency。没有 React(或 Solid、Svelte——TanStack 支持多框架)就无法使用 TanStack。
真正值得问的问题
如果你在评估 TanStack,以下是值得提出的问题:
我应该用 TanStack Query 吗?
- 你要从 API 获取数据吗?→ 用。
- 有多个组件需要共享同一份数据吗?→ 用。
- 有加载状态、错误状态和重试逻辑吗?→ TanStack Query 原生处理这些。
我应该用 TanStack Router 吗?
- 需要嵌套布局吗?→ 用。
- 需要带数据加载的 SSR 吗?→ 用。
- 想要跨路由的 TypeScript 类型安全吗?→ TanStack Router 是最佳选择。
我应该用 TanStack Start 吗?
- 想要一个带 SSR 的元框架吗?→ 和 Next.js、Remix 对比评估。
- 已经使用 TanStack 生态了吗?→ TanStack Start 原生集成。
React 提供而 TanStack 不提供的部分
TanStack 库不是 React 的替代品。它们依赖 React。React 提供而 TanStack 不提供的内容:
- 组件模型:类组件和函数组件的架构
- 虚拟 DOM:渲染引擎
- JSX:编写 UI 组件的语法
- Hooks:状态和生命周期原语(
useState、useEffect、useRef) - DevTools:用于组件检查的 React DevTools
当你使用 TanStack Query 时,你写的仍然是 React 组件。TanStack Query 提供数据层;React 提供渲染层。
相关阅读: Tanstack Router Vs React Router 2026 · React Router V7 Vs Tanstack Router 2026 · Tanstack Ranger Range Selector React 2026
真正有意义的对比:TanStack vs Zustand、Redux、Jotai
如果你问的是「TanStack vs React」但实际想比较的是「TanStack Store vs React 状态管理」,以下才是真正的对比:
| 库 | 最适合场景 | 包体积 | 类型安全 |
|---|---|---|---|
| TanStack Store | 响应式非 UI 状态 | ~5KB | 原生 TypeScript |
| Zustand | 简单全局状态 | ~1KB | TypeScript 支持 |
| Redux Toolkit | 大规模可预测状态 | ~10KB | 优秀的 TypeScript |
| Jotai | 原子化状态组合 | ~3KB | TypeScript 支持 |
TanStack Store 和 Zustand 是最相近的对比。TanStack Store 更偏向响应式编程方向;Zustand 更偏向 Hook 方向。对于大多数应用,Zustand 更简单。对于有复杂派生状态的应用,TanStack Store 的响应式模型优势明显。
TanStack Ship 在 React 之上预配置了 TanStack Query、TanStack Router 和 TanStack Form。 查看完整功能列表。