React 生态中的状态管理方案非常多,可以按照React 内置状态管理、轻量级状态管理、Flux/Redux架构、原子化状态管理、服务端状态管理等类别来划分。
1. React 内置状态管理
useState
最基础的状态管理方式。
const [count, setCount] = useState(0);优点
React 官方提供
学习成本低
适合局部状态
缺点
跨组件共享困难
状态复杂时维护困难
适用场景
表单
弹窗开关
按钮状态
useReducer
适合复杂状态逻辑。
const reducer = (state, action) => { switch(action.type){ case 'add': return { count: state.count + 1 }; default: return state; } }; const [state, dispatch] = useReducer(reducer, { count: 0 });优点
类似 Redux
状态更新逻辑集中
缺点
样板代码较多
仅适合组件内部
适用场景
复杂表单
多状态联动
Context
React 提供的跨组件共享状态方案。
const UserContext = createContext(); <UserContext.Provider value={user}>优点
官方支持
不需要第三方库
缺点
Provider 嵌套地狱
数据变化容易导致大量组件重渲染
适用场景
用户信息
主题切换
国际化
2. Redux 系列
Redux
最经典状态管理库。
store dispatch action reducer数据流:
View ↓ dispatch ↓ action ↓ reducer ↓ store ↓ View优点
数据流清晰
调试能力强
DevTools 非常优秀
缺点
模板代码多
学习成本高
适用场景
大型项目
多团队协作
Redux Toolkit(RTK)
Redux 官方推荐方案。
const counterSlice = createSlice({ name: 'counter', initialState: 0, reducers: { increment: state => state + 1 } });优点
大幅减少模板代码
官方推荐
TypeScript 支持优秀
缺点
本质还是 Redux
当前状态
React 项目中 Redux 基本都使用 RTK。
RTK Query
Redux 官方数据请求方案。
const { data } = useGetUsersQuery();优点
自动缓存
自动刷新
请求状态管理
类似于
React Query
SWR
3. MobX
响应式状态管理。
class Store { @observable count = 0; @action increment() { this.count++; } }优点
学习简单
代码量少
自动追踪依赖
缺点
数据流不如 Redux 明确
大型项目容易失控
适用场景
中大型后台系统
4. Zustand(目前最火)
由 pmndrs 开发。
const useStore = create((set) => ({ count: 0, increment: () => set((state) => ({ count: state.count + 1 })) }));优点
API 极简
无 Provider
性能优秀
支持 TypeScript
缺点
生态不如 Redux
适用场景
React 中后台
Next.js
React Native
当前趋势
2024-2026 年大量新项目直接使用 Zustand。
5. Recoil
由 Meta 推出。
const countState = atom({ key: 'count', default: 0 });优点
原子化状态管理
React 风格
缺点
更新缓慢
社区活跃度下降
现状
很多项目已转向 Zustand 或 Jotai。
6. Jotai
Recoil 思想的升级版。
const countAtom = atom(0);优点
API 极简
原子化设计
TypeScript 友好
缺点
社区规模小于 Redux
适用场景
中小型项目
Next.js
7. Valtio
Proxy 响应式状态管理。
const state = proxy({ count: 0 });优点
写法接近 Vue
缺点
社区相对较小
8. XState
状态机管理。
const machine = createMachine({ initial: 'idle', states: { idle: {}, loading: {}, success: {} } });优点
状态流严格
复杂业务非常强
缺点
学习曲线陡峭
适用场景
工作流系统
审批系统
订单流转
9. Effector
响应式状态管理。
const increment = createEvent(); const $counter = createStore(0);优点
高性能
响应式
缺点
学习资料较少
10. 服务端状态管理
很多时候后端数据不应该放到 Redux。
TanStack Query(React Query)
当前最流行。
const { data } = useQuery({ queryKey: ['users'], queryFn: getUsers });管理
请求缓存
重试
分页
乐观更新
不管理
UI状态
弹窗状态
SWR
由 Vercel 开发。
const { data } = useSWR('/api/user');优点
简洁
Next.js 友好
各方案对比
| 方案 | 难度 | 性能 | TS支持 | 推荐指数 |
|---|---|---|---|---|
| useState | ⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Context | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| useReducer | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Redux | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Redux Toolkit | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| MobX | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Zustand | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Recoil | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| Jotai | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Valtio | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| XState | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| React Query | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| SWR | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
2026 年实际项目推荐
如果你是做 React 中后台开发(像你目前做的云性能平台):
小型项目
useState + Context中型项目(最推荐)
Zustand + React Query大型项目
Redux Toolkit + RTK Query超复杂业务
Redux Toolkit + XStateNext.js 项目
Zustand + React Query对于你这种有 7 年前端经验、主要做 React + Ant Design 后台系统的场景,目前最值得深入学习的是:
1. Zustand 2. React Query(TanStack Query) 3. Redux Toolkit(RTK)这三套基本覆盖了当前 React 企业级项目 90% 以上的状态管理需求。