用途:在 React 中管理全局或共享状态时使用 Zustand 5,包括实现持久化、使用 store、以及需要在组件外访问状态时加载。
主要能力与模式:
- 基础类型化 store:用 create<State>()((set) => ...) 定义状态与动作。
- 选择器:用 useStore((s) => s.field) 只订阅所需字段;多字段用 useShallow 包裹对象选择器,避免引用变化导致重渲染。
- 持久化:create()(persist(..., { name: 'key' })),name 为 localStorage 键。
- 异步与加载/错误状态:在动作内用 async/await 调用 API,再 set 更新。
- 切片模式:按领域拆分 slice 函数,最后在 store.ts 中合并。
- Immer:create()(immer(...)) 允许直接修改状态。
- DevTools:create()(devtools(..., { name: 'Name' }))。
- 组件外访问:useStore.getState();订阅:useStore.subscribe(selector, callback)。
规则与限制:store 应按领域拆分(auth、cart、UI 等),避免单一无限增长的全局 store;始终用选择器订阅具体状态切片,订阅整个 store 会导致任意变化都重渲染;persist 只用于真正需要持久化的 store,过度持久化会在 schema 变更后产生陈旧状态 bug;动作必须定义在 create 回调内,不能作为接收 store 的外部函数;Zustand 5 用 useShallow 处理对象选择器。反模式包括选择整个 store、在 set 内直接写异步逻辑。资料未提供安装命令、版本要求、收费与平台信息。