createStore 是 Zustand 中的一个核心函数,它能够创建纯粹的(不依赖框架的)状态容器。与特定于 React 的 create 函数不同,createStore 提供了一个纯粹的状态管理解决方案,可以用于任何 JavaScript 应用程序,而无需考虑框架。
如果您正在寻找特定于 React 的 store 创建方式,请参阅 create。
createStore 函数允许您创建一个状态容器,该容器公开了一个简单的状态管理 API。它构成了 Zustand 架构的基础,提供了库其他部分所依赖的核心状态管理能力。
来源: src/vanilla.ts43-51 src/vanilla.ts99-100
createStore 接受一个状态创建函数,并返回一个 store API 对象
来源: src/vanilla.ts29-37 src/vanilla.ts43-51 src/vanilla.ts60-97
stateCreatorFn:一个接受以下参数的函数set:一个用于更新状态的函数get:一个用于检索当前状态的函数api:Store API 对象(允许自引用)状态创建函数应返回一个表示初始状态的对象。
createStore 返回一个 Store API 对象(StoreApi<T>),其中包含以下方法:
setState:部分或全部更新状态getState:返回当前状态getInitialState:返回初始状态subscribe:注册一个监听器,当状态改变时会调用该监听器来源: src/vanilla.ts9-14 src/vanilla.ts60-97
createStore 的核心实现负责管理状态和监听器
这是一个 `createStore` 的基本用法示例
来源: docs/apis/create-store.md48-107
createStore 提供了几种更新状态的方式
对于原始类型的值,通常需要替换整个状态
来源: docs/apis/create-store.md127-148
对于对象,您可以执行部分更新,这些更新将与现有状态合并
当您想完全替换状态对象时,请使用 replace 参数
来源: docs/apis/create-store.md165-222
当更新依赖于先前状态时,请使用 `setState` 的函数形式
来源: docs/apis/create-store.md49-107
subscribe 方法允许您注册监听器,当状态发生变化时会调用它们
订阅状态变化的示例
来源: src/vanilla.ts88-92 docs/apis/create-store.md277-324
createStore 可以通过中间件进行增强,以获得额外功能
来源: docs/middlewares/immer.md174-189
来源: docs/middlewares/persist.md96-107
关键区别
目标用途:
createStore 是不依赖框架的,并返回一个纯粹的 store APIcreate 是特定于 React 的,并返回一个 hook 函数访问模式:
store.getState().countuseStore(state => state.count)订阅处理:
通常将状态分为两部分
一个常见的错误是直接修改状态而不是创建新对象
来源: docs/apis/create-store.md342-517
当订阅状态变化时,请确保在不再需要订阅时取消订阅
createStore 是 Zustand 状态管理系统的基础,为任何 JavaScript 应用程序提供了最小化但功能强大的状态管理 API。它可以直接用于纯 JavaScript 应用程序,或作为 Zustand 的 React 集成等特定于框架的绑定的基础。
通过理解和利用 `createStore`,您可以构建灵活、高效的状态管理解决方案,这些解决方案可以在不同的上下文和框架中工作。