Skip to content

IV.6 状态管理解决方案:集中化应用程序数据

目的:在复杂应用程序中高效地管理组件之间的应用程序状态(数据),避免“prop drilling”。

在 2026 年谈状态管理,第一步不是选库,而是先区分:

  • 本地 UI 状态:弹窗开关、表单输入、当前选项卡
  • 客户端共享状态:主题、用户偏好、跨组件业务状态
  • 服务端状态:接口请求结果、缓存、重新获取、失效策略

很多项目的问题并不是“没有状态管理库”,而是把服务端状态和客户端状态混在一起。
像 TanStack Query、SWR 这类工具更适合处理服务端状态;本章讨论的库主要针对客户端共享状态

  • Redux (Redux Toolkit):广泛使用的状态管理库,遵循单向数据流和集中式存储。Redux Toolkit 简化了 Redux 逻辑。
  • Zustand:极简的状态管理库,专注于简单性和性能,使用单一存储。
  • Jotai:原子(自下而上)状态管理库,其中状态由单个原子组成,根据原子依赖性优化渲染。
  • Pinia:Vue 官方生态当前的主流选择之一。相较 Vuex 更直观、类型友好、样板更少,适合作为 Vue 3 新项目的默认起点。
  • Vuex:Vue.js 的传统状态管理方案。今天更应将其视为存量项目知识,而不是 Vue 新项目的默认推荐。

如果你在旧文章、旧项目里看到 Recoil,需要特别注意:它在官方 GitHub 仓库层面已经进入归档状态,不应再作为 React 新项目的优先选择。

状态管理库的演进趋势很明确:更少样板代码、更好的 TypeScript 支持、更清晰的心智模型。
因此,新项目通常优先在 Redux Toolkit / Zustand / Jotai / Pinia 之间做选择,而不是再回到 Recoil、Vuex 这样的历史方案上。

表格:主要状态管理库比较

库名称框架兼容性设计哲学(示例)学习曲线样板代码TypeScript 支持2026 年推荐度理想用例(示例)
Redux ToolkitReact集中式存储,可预测状态中等偏高中等良好大型复杂应用,需要强约束、可预测状态流
ZustandReact极简,单一存储较低极少良好很高中小型应用,重视简单、灵活和性能
JotaiReact原子,自下而上较平缓极少良好细粒度状态控制、组合性强的 React 项目
PiniaVue模块化,无 Mutations较低极少优秀很高Vue 3 新项目,注重简单性和类型支持
VuexVue集中式存储,严格结构中等较多较弱仅存量项目推荐遗留 Vue 2/早期 Vue 3 项目,需要维护既有代码
Recoil(已归档)React原子,派生状态中等中等良好不建议新项目继续采用仅在维护历史项目时需要理解

一个很实用的默认建议是:

  • React 新项目:先想清楚是否真的需要全局状态;需要时优先看 Zustand 或 Redux Toolkit,细粒度组合场景再看 Jotai
  • Vue 新项目:默认先看 Pinia
  • 看到 Recoil / Vuex:优先理解为“接手旧项目时要会”,而不是“新项目默认该选”

基于 CC BY-NC-SA 4.0 许可发布