react状态库-zustand
🐻 Zustand 简介
Zustand 是由 Poimandres 团队(也是 Three.js 知名维护者之一) 开发的一个轻量级、无样板代码的 全局状态管理库。 Zustand 的核心理念是:最少的 API,最强的表达力。
✅ 特点总结
特性 | 说明 |
---|---|
⚡️ 无 Provider | 不需要 <Provider> 包裹应用 |
🪶 极轻量 | gzipped 后约 1KB |
🧠 使用简单 | 类似 useState 的方式写 store |
🔄 自动依赖追踪 | 组件只在实际使用的状态变化时重新渲染 |
🧵 原生支持并发 | 适配 React 18 的自动批处理和 concurrent 特性 |
🔗 支持中间件 | 如持久化、订阅、调试等插件灵活扩展 |
⚛️ React Native 支持 | 无差别可用,React/React Native 通用 |
⚙️ Zustand 的核心原理
Zustand 底层借助 Proxy 和 subscribe 实现 “精确依赖追踪”,只会重新渲染访问了特定字段的组件
✨ 组件更新机制
js
useStore((state) => state.bears)
每个组件只订阅所用到的 state 片段,不会因为 store 中无关字段变化而重新渲染,避免性能浪费。
🧪 Zustand 与 React 18
特性 | 是否支持 | 说明 |
---|---|---|
自动批处理 | ✅ | 多个 set 调用合并为一次 render |
并发模式支持 | ✅ | 兼容 startTransition , Suspense 等特性 |
严格模式兼容 | ✅ | 支持 React 18 的开发双调用机制 |
选择器渲染优化 | ✅ | useStore(selector) 精细依赖跟踪 |
🔚 总结:什么时候选择 Zustand?
✅ 推荐使用 Zustand 的场景:
- 小到中型应用
- 不想引入复杂的 Redux 生态
- 希望有清晰的 store 分离 + 组件自动优化
- 想快速上手、写法简洁
- 项目不需要跨组件通信以外的多中间件管控