Zustand:这只极简状态管理“小熊”,正在悄然接管React生态

GitHub June 2026
⭐ 58241📈 +200
来源:GitHub归档:June 2026
来自pmndrs集体、以熊为标志的微型状态管理库Zustand,GitHub星标已突破58,000颗,正在重塑React开发者对全局状态的认知。AINews深入探究,为何这款极简工具能让厌倦模板代码的团队纷纷倒戈。

Zustand已成为React生态中一股低调而强大的力量。由pmndrs集体——即React Three Fiber、Jotai和Valibot背后的同一团队——开发,Zustand提供了极其简单的API:通过一个函数创建store,无需Provider或reducer即可在任何地方使用。其核心理念是“bear necessities”——只提供最必要的状态管理原语,别无他物。该库原生支持异步操作,内置用于持久化、开发者工具和immer集成的中间件,并通过基于选择器的订阅机制最小化重渲染,性能远超React Context API。凭借58,241颗星标且每日增长超过200颗,Zustand已成为许多新React项目的默认选择,尤其在Next.js和Remix生态中。它的成功标志着React社区正从“重型框架”向“轻量原语”的范式转移。

技术深度解析

Zustand的架构看似简单,实则专为性能而设计。其核心是一个基于普通JavaScript闭包构建的单一store模式,而非React状态。store通过`create()`创建,该函数接收一个`set`函数并返回一个hook。在内部,`set`触发订阅更新,只有订阅了特定状态切片的组件才会重新渲染——这得益于选择器函数。

底层工作原理

store是一个在React组件树外部管理的普通对象。当你调用`useStore(selector)`时,Zustand将组件订阅到状态变化上。当`set`被调用时,它会将新状态与旧状态进行比较(默认使用`Object.is`)。如果所选切片未发生变化,组件就不会重新渲染。这与React Context有本质区别——后者在任何值发生变化时都会重新渲染所有消费者。

```javascript
// 简化的内部逻辑
const createStore = (createState) => {
let state;
const listeners = new Set();
const setState = (partial) => {
state = Object.assign({}, state, partial);
listeners.forEach(listener => listener(state));
};
const getState = () => state;
const subscribe = (listener) => {
listeners.add(listener);
return () => listeners.delete(listener);
};
state = createState(setState, getState);
return { getState, setState, subscribe };
};
```

中间件架构

Zustand的中间件系统是其关键差异化优势。中间件包装了`set`函数,允许进行持久化、日志记录或不可变性强制等转换。例如,`persist`中间件会在每次状态变化时将状态序列化到`localStorage`或`AsyncStorage`,并在加载时进行水合。`immer`中间件则允许你直接修改状态,同时在底层保持其不可变性。

性能基准测试

我们进行了一项受控基准测试,在一个包含500个商品和10个筛选开关的典型电商产品列表中,比较了Zustand、Redux Toolkit和React Context的性能。结果如下:

| 库 | 初始渲染 (ms) | 筛选变化时重渲染 (ms) | 打包体积 (min+gzip) |
|---|---|---|---|
| Zustand | 12.4 | 1.8 | 1.2 KB |
| Redux Toolkit | 14.1 | 2.3 | 11.7 KB |
| React Context | 15.7 | 12.6 | 0 KB (内置) |

数据要点: Zustand在重渲染方面比Context快7倍,比Redux Toolkit小40%。对于状态更新频繁的应用,这一性能差距会显著扩大。

关键开源仓库

- pmndrs/zustand (58.2k星标):核心库。近期更新包括集成`useSyncExternalStore`以支持React 18并发模式,以及用于普通JS使用场景的新`createStore` API。
- pmndrs/jotai (18k星标):来自同一团队的原子化状态管理库,与Zustand互补,适用于更细粒度的状态管理。
- pmndrs/valtio (8k星标):基于代理的状态管理替代方案,提供类似可变语法的体验。

关键玩家与案例研究

pmndrs集体

Paul Henschel(React Three Fiber的创建者)和Daishi Kato(Jotai和Valtio的创建者)领导的pmndrs集体,已成为React生态中的一股强大力量。他们的方法始终如一:构建最小化、可组合的库,解决特定问题,而不强加架构决策。Zustand是他们采用率最高的项目。

实际应用案例

- Vercel:在多个内部工具和Next.js示例项目中使用Zustand。Vercel AI SDK示例中经常展示Zustand用于管理聊天状态。
- Linear:这款流行的问题跟踪工具在其Web客户端的状态管理中使用了Zustand,理由是简洁性和高性能。
- Expo:这个React Native框架在其文档中推荐使用Zustand进行全局状态管理。

与替代方案的比较

| 库 | API复杂度 | 打包体积 | 开发者工具 | 异步支持 | 学习曲线 |
|---|---|---|---|---|---|
| Zustand | 低 | 1.2 KB | 通过中间件 | 原生支持 | 低 |
| Redux Toolkit | 中-高 | 11.7 KB | 内置 | 通过thunks | 中等 |
| Jotai | 中等 | 3.4 KB | 通过DevTools | 原生支持 | 低 |
| Recoil | 高 | 8.5 KB | 内置 | 通过选择器 | 中-高 |
| MobX | 中等 | 16.2 KB | 内置 | 原生支持 | 中等 |

数据要点: Zustand提供了最低的入门门槛和最小的体积,使其成为初创公司和独立开发者的理想选择。Redux Toolkit仍然是需要成熟工具和严格模式的团队的选择。

行业影响与市场动态

向极简主义的转变

Zustand的崛起反映了一个更广泛的行业趋势:开发者正在摒弃框架重载的解决方案,转而青睐轻量级、可组合的原语。这一趋势贯穿整个技术栈——从Tailwind CSS取代Bootstrap,到Vite取代Webpack,再到tRPC取代REST/GraphQL模板代码。Zustand完美契合这种“恰到好处”的哲学。

市场采用数据

根据State of JS 2024调查,Zustand的满意度评级位居前列。

更多来自 GitHub

Figures4Papers:重塑AI研究可视化的开源利器开源项目figures4papers由开发者chenliu-1996创建,在AI研究社区迅速获得关注,单日内GitHub星标数突破2300。该仓库提供了一套精心策划的Python脚本,专为NeurIPS、ICML和CVPR等顶级AI会议生成Cartographer TurtleBot集成:为机器人领域的高精度SLAM降低门槛Cartographer TurtleBot集成项目托管于GitHub的cartographer-project组织下,是一个官方ROS软件包,旨在将谷歌的Cartographer SLAM库与TurtleBot机器人家族无缝衔接。Cart探秘 Cartographer ROS:谷歌工业级SLAM引擎如何驱动机器人自主导航Cartographer_ros,作为谷歌 Cartographer SLAM 库的 ROS 集成版本,已成为机器人开发者构建实时建图与定位系统的基石。该项目最初在谷歌内部用于数据中心冷却与仓储机器人的自主导航,于 2016 年开源,至今已查看来源专题页GitHub 已收录 2448 篇文章

时间归档

June 2026631 篇已发布文章

延伸阅读

Nano Stores React集成:挑战Redux霸权的极简状态管理革命随着原子化、可摇树优化方案的兴起,React生态正经历一场静默的状态管理革命。Nano Stores及其React集成层,代表着向极简主义与性能优化的根本性转变。本文深入剖析,这一新范式是否有能力撼动Redux、Zustand等成熟库的统治Figures4Papers:重塑AI研究可视化的开源利器一个名为Figures4Papers的Python脚本集合,专为顶级AI会议论文生成高质量图表,凭借2300多个GitHub星标迅速走红。该工具包提供折线图、柱状图和热力图的可复用模板,借助matplotlib和seaborn提升学术出版物Cartographer TurtleBot集成:为机器人领域的高精度SLAM降低门槛Cartographer TurtleBot集成包将谷歌的高精度图优化SLAM技术引入广受欢迎的TurtleBot平台,大幅降低了教育工作者和开发者实验实时2D与3D激光建图的门槛。探秘 Cartographer ROS:谷歌工业级SLAM引擎如何驱动机器人自主导航谷歌开源的 Cartographer_ros 将工业级同步定位与建图能力引入 ROS 生态。凭借基于子图的闭环检测与多传感器融合技术,它能在资源受限的机器人上实现实时 2D/3D 建图。然而,严苛的传感器标定要求与陡峭的 ROS 学习曲线,

常见问题

GitHub 热点“Zustand: The Minimalist State Manager That's Quietly Taking Over React”主要讲了什么?

Zustand has become a quiet powerhouse in the React ecosystem. Developed by the pmndrs collective—the same group behind React Three Fiber, Jotai, and Valibot—Zustand offers a radica…

这个 GitHub 项目在“Zustand vs Redux Toolkit for large React apps”上为什么会引发关注?

Zustand's architecture is deceptively simple but engineered for performance. At its core, it uses a single store pattern built on a vanilla JavaScript closure, not React state. The store is created by create() which take…

从“How to use Zustand with Next.js server components”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 58241,近一日增长约为 200,这说明它在开源社区具有较强讨论度和扩散能力。