UNPKG

utquidem

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

71 lines (55 loc) 2.21 kB
--- sidebar_position: 5 --- # createApp :::info 补充信息 用于创建局部状态,将不同 **Model App** 间状态隔离。 ```ts import { createApp } from '@modern-js/runtime/model'; ``` ::: :::caution 注意 - 注意 `@modern-js/runtime/model` 中导出的 `createApp` 用于管理状态,而 `@modern-js/runtime` 导出的 `createApp` 用于管理更下层的运行时,两者功能不同。 ::: ## API `createApp(config) => object` ### 参数 - config:`Record<string, any>` - [models]:在 App 入口中统一注册 models。(正常使用无需提前注册) <!-- TODO: 注册有什么用? --> - [initialState]:用于设置全局 store 的初始状态。(一般用于 SSR,初始化数据) - [plugins]:注入插件,可注入的插件有(router、immer、auto-action、machine 等)。 <!-- TODO: 插件列表、链接 --> - [enhancers]:Redux createStore API enhancer 配置,详见[介绍](https://redux.js.org/api/createstore)。 ### 返回值 - Provider:`React.ComponentType<any>`,React 组件,提供局部 **React Context** 环境。 - useModel:`function`,获取 **Model** **React Hook** 函数,详见 [**useModel**](../container/use-model)。 - useStaticModel:`function`,获取 **Model** **React Hook** 函数,详见 [**useStaticModel**](../container/use-static-model)。 ## 示例 通过 `createApp` 可以创建局部状态,将不同 **Model App** 间状态隔离。 ```tsx import { createApp, model } from '@modern-js/runtime/model'; import autoActions from '@modern-js-reduck/plugin-auto-actions'; import { fooModel } from '@/common/models'; const { Provider: LocalFooProvider, useModel: useLocalFooModel} = createApp({ plugins: [autoActions()] }); const { Provider: LocalBarProvider, useModel: useLocalBarModel} = createApp({ plugins: [autoActions()] }); function Foo() { const [fooState] = useLocalFooModel(fooModel); const [barState] = useLocalBarModel(fooModel); return <div> <div>Foo: {fooState}</div> <div>Bar: {barState}</div> </div> } function Container() { return <LocalFooProvider> <LocalBarProvider> <Foo /> </LocalBarProvider> </LocalFooProvider> } ```