utquidem
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
54 lines (38 loc) • 2.01 kB
Markdown
---
sidebar_position: 6
---
# createStore
:::info 补充信息
通过 `createStore` 可以在 **React** 组件外消费 **Model**。也可以创建多个 **store** 来拆分状态。
如在工具函数中访问 **state**、执行 **actions** 时可利用 `createStore` 获取工具函数来消费 **Model**。
```ts
import { createStore } from '@modern-js/runtime/model';
```
:::
## API
`createStore(config) => ReduxStore & { use: UseModel }`
### 参数
- config:`object`,store 配置选项
- initialState: Record<string, any>,用于设置全局 **store** 的初始状态。(一般用于 **SSR**,初始化数据)
- reducer: `Reducer`
- middlewares: `Middleware[]`
- models: `Model[]`,在 App 入口中统一注册 **Models**。(正常使用无需提前注册)
<!-- TODO: 注册有什么用? -->
- plugins: `Plugin[]`,注入插件,可注入的插件有(**router、immer、auto-action、machine** 等)。
<!-- TODO: 插件列表、链接 -->
- enhancers: `StoreEnhancer[]`,**Redux** `createStore` API 中 **enhancer** 配置,详见[介绍](https://redux.js.org/api/createstore)。
### 返回值
`createStore` 函数返回 `store`,`store` 是继承 [Redux Store](https://redux.js.org/tutorials/fundamentals/part-4-store#redux-store),并在其上添加了 `use` 函数。
- use:`function`,获取 **Model** 的 **React Hook** 函数,用法与 [**useStaticModel**](../container/use-static-model) 相同,但可以在 **React** 组件外使用。
- ReduxStore:`ReduxStore`,详见 [**Redux Store**](https://redux.js.org/tutorials/fundamentals/part-4-store#redux-store)。
<!-- TODO: 没有 useStaticModel? -->
<!-- - `useStaticModel`:获取 **Model** 的 **React Hook** 函数,详见 [**useStaticModel**](../container/use-static-model)。 -->
## 示例
```tsx
import { createStore } from '@modern-js/runtime/model';
const store = createStore({});
function load() {
const [, actions] = store.use(fooModel);
actions.load();
}
```