zustand

一句话

小巧(~1KB)、无 Provider、基于 hooks 的 React 状态管理库,用简单的 store 函数代替 Context 样板代码,是"轻量但够用"这一档的首选。

核心心智模型

最小示例

import { create } from 'zustand'

const useBearStore = create((set) => ({
  bears: 0,
  increase: () => set((state) => ({ bears: state.bears + 1 })),
}))

function BearCounter() {
  const bears = useBearStore((state) => state.bears)
  return <h1>{bears} bears</h1>
}

什么时候选它

什么时候不选它 / 替代方案

场景 更合适的选择
只是父子组件间传值,层级不深 直接 props 或 useState
只是低频、简单的全局配置(主题、语言) React Context 就够
强团队规范、需要严格的 action 审计/时间旅行调试、大型企业应用 Redux Toolkit
状态天然是"服务端数据缓存"(请求/loading/缓存/重试) TanStack Query(配合 zustand 管纯客户端状态)
偏好 atom 化、细粒度依赖追踪的写法 Jotai / Recoil

优缺点

优点:API 极简、几乎零样板、无需 Provider、按需订阅性能好、TS 类型推导友好、体积小、可脱离 React 使用。

缺点:没有 Redux 那种强约束和成熟的 DevTools 时间旅行生态(虽然有 devtools middleware 但没那么完整);缺乏内置的强 action 规范,团队大了容易写法不统一。

相关信息