此页面详细介绍了 Zustand 中 store 的创建核心功能,解释了用于创建状态 store 的不同 API 及其底层实现。它涵盖了框架无关和 React 特定的 store 创建方法。有关创建 store 后更新状态的详细信息,请参阅状态更新。
Zustand 提供了两种主要的 store 创建方法:
createStore:框架无关的原生 store 创建函数。create:React 特定的 store 创建函数,用于将 store 绑定到 React 的状态管理系统。这两种方法都依赖于相同的底层 store 实现,但服务于不同的用例。
`createStore` 函数是 Zustand 状态管理的基础构建块。它创建一个框架无关的 store,可以用于任何地方,而不仅仅是 React 应用。
`createStore` 函数接受一个状态创建函数,并返回一个 store API 对象,其中包含与 store 交互的方法。
Store API(`StoreApi<T>`)提供了以下方法:
| 方法 | 签名 | 描述 |
|---|---|---|
setState | (partial: T | Partial<T> | ((state: T) => T | Partial<T>), replace?: boolean) => void | 更新 store 状态。 |
getState | () => T | 返回当前状态。 |
getInitialState | () => T | 返回初始状态。 |
subscribe | (listener: (state: T, prevState: T) => void) => () => void | 订阅状态更改,返回取消订阅函数。 |
`createStore` 的实现
来源:tests/basic.test.tsx416-429
`create` 函数构建在 `createStore` 之上,以提供 React 集成,返回一个可以直接在组件中使用的 React hook。
返回的 hook 可与可选的选择器函数一起使用,以提取状态的特定部分。
为了进行性能优化,Zustand 提供了 `createWithEqualityFn`,它允许指定一个自定义相等函数来确定组件何时应该重新渲染。
来源:docs/apis/create-with-equality-fn.md36-38
来源:docs/apis/create-with-equality-fn.md82-91
StateCreator 函数是定义 store 行为的核心构建块,并用于所有 store 创建方法。
来源:tests/basic.test.tsx416-429
对于使用 `createStore` 创建的原生 store,您可以使用 `useStore` hook 将其集成到 React 组件中。
这允许在 React 组件中使用框架无关的 store,并进行选择性渲染优化。
来源:docs/hooks/use-store.md28-29
来源:docs/apis/create.mddocs/apis/create-with-equality-fn.md52-57
Zustand 使用 TypeScript 为 Store 提供类型安全。Store 创建所涉及的关键类型包括:
此类型系统支持:
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(4d3a01)