Zustand(德语意为“状态”)是一个极简的状态管理库,适用于 React 应用,旨在为应用状态管理提供一种简单而强大的方法。本文档介绍了 Zustand 的核心概念、架构和基本用法。有关详细的 API 文档,请参阅API 参考,有关与 React 的具体用法,请参阅与 React 的用法。
Zustand 的创建旨在通过提供一种轻量级、非主观的解决方案,专注于简洁性和易用性,来解决状态管理中的常见痛点。其核心理念包括:
Zustand 的基础围绕一个简单的 store 概念构建,并在 vanilla 状态管理和 React 特定绑定之间进行分离。
其架构包括:
来源:src/index.ts1-3 src/middleware.ts1-6
使用 Zustand 创建 store 非常简单,只需调用一次 create() 函数并传入状态定义即可。
一个基础的 store 包括:
核心 API 提供了三个基本函数用于与状态交互:
set:更新状态get:检索当前状态subscribe:注册状态变化的监听器来源:tests/types.test.tsx41-69 tests/middlewareTypes.test.tsx44-59
Zustand 的中间件系统允许通过可组合模式扩展核心功能。中间件包装了状态创建函数,增加了持久化、不可变更新和开发工具等功能。
主要的中间件包括:
来源:src/middleware.ts1-6 tests/middlewareTypes.test.tsx62-303
Zustand 在设计时就充分考虑了 TypeScript 的支持,在整个状态管理过程中提供了类型安全。
类型系统提供了:
来源:tests/types.test.tsx10-102 tests/middlewareTypes.test.tsx17-41
Zustand 提供了一种独特的状态管理方法,这与其他流行的库有所不同。
| 库 | 方法 | 复杂性 | 打包大小 | 学习曲线 |
|---|---|---|---|---|
| Zustand | 基于 Hook,以 Store 为中心 | 低 | ~1KB | Shallow (浅比较) |
| Redux | Action-Reducer 模式 | 中高 | 约 4KB | 陡峭 |
| MobX | 基于 Observable | 中等 | 约 6KB | 中等 |
| Jotai | 原子状态 | 低 | ~2KB | Shallow (浅比较) |
| Recoil | 原子状态 | 中等 | ~20KB+ | 中等 |
| Context API | Context 提供者 | 低 | 内置 | Shallow (浅比较) |
与 Redux 不同,Zustand 不需要 Action 类型、Reducer 或 Dispatcher。与 Context API 相比,它提供了更好的性能优化和更强大的功能,如中间件和选择性重渲染。
要开始使用 Zustand,您需要:
安装包:
npm install zustand
# or
yarn add zustand
# or
pnpm add zustand
创建 Store:使用状态和修改该状态的 Actions 来创建 Store。
在组件中消费 Store:使用 create() 返回的 Hook 在组件中访问状态。
有关详细的安装说明和入门示例,请参阅安装与入门。
Zustand 拥有不断增长的官方扩展和第三方库生态系统,可以增强其功能。
Zustand 的模块化设计鼓励扩展和定制,围绕其核心概念形成了充满活力的工具和模式生态系统。
来源:package.json27-49 package.json152-171
本介绍提供了 Zustand 关键概念和架构的概述。Wiki 的后续部分将深入探讨使用和扩展 Zustand 的具体方面。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(4d3a01)