状态管理 2026:Zustand、Jotai 与 Signals 之争
从「服务端状态 vs 客户端状态」的分类出发,重新审视 2026 年主流状态管理方案的适用边界。
状态管理曾经是前端最热闹的战场,Redux、MobX、Recoil 轮番登场。到 2026 年,喧嚣退去,方案趋于收敛。本文谈谈当下的主流选择与判断标准。
先回答一个问题:状态从哪来
很多争论源于把两类状态混为一谈:
- 服务端状态:来自 API 的数据,有「加载中/成功/失败」的生命周期,需要缓存与重新获取;
- 客户端状态:UI 交互产生的临时状态,如弹窗开关、表单草稿、主题。
这两类状态的性质完全不同,用同一套工具硬套往往是痛苦的根源。
服务端状态:交给数据层
对于服务端状态,专用数据请求库是更优解。React Query、SWR、Apollo 这类工具帮你处理缓存、去重、失效与后台重新获取,把「数据」从组件里解放出来。
它们与状态管理库并不冲突,而是各管一段:数据层管服务端状态,状态库只管真正需要全局共享的客户端状态。
客户端状态:轻量化的胜利
当数据层接管了服务端状态后,剩下的客户端状态往往很少,于是轻量方案崛起:
- Zustand:极简的 store API,无样板代码,兼容性好;
- Jotai:原子化(atom)模型,细粒度订阅,适合派生状态;
- Signals:以「响应式信号」为核心,性能极致,在部分框架生态中流行。
我的选择标准
- 先减少状态:能用派生就不存,能局部就不全局;
- 服务端状态用数据层,不要塞进全局 store;
- 客户端全局状态才用 Zustand 这类轻量库;
- 避免「为用而用」——很多场景
useState+useContext已足够。
结语
状态管理的最高境界是「没有多少状态需要管理」。把状态分类、把职责划清,比追逐最新最热的库更重要。