UNPKG

utquidem

Version:

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

68 lines (51 loc) 1.94 kB
--- sidebar_position: 1 title: Model 介绍 --- Modern.js 中引入 Model 的概念作为应用状态管理模型Model 用来封装业务数据和数据处理方法,在代码组织上与 View(视图)分离 :::info 注 Modern.js 的 Model 基于 [Redux](https://redux.js.org/) 实现,提供更高层级的抽象,并完全兼容 Redux 生态。 ::: 下来我们以一个基础的 `countModel` 为例,演示如何创建一个 Model: ```ts import { model } from '@modern-js/runtime/model'; const countModel = model("count").define({ state: { value: 1 }, actions: { add(state) { return { ...state, value: state.value + 1 }; } } }); export default countModel; ``` 我们使用 `model` 函数创建了一个名为 `count` 的 Model,Model 里定义了 `state` 和 `actions` - `state` 表示计数器状态,它是业务逻辑相关的数据 - `actions` 里可以添加更新状态的纯函数,它是对数据的处理方法它接收当前的状态 `state` 作为入参,返回一个新的状态 ## 以 Mutable 方式更新 State 上述的 `add` 函数是一个纯函数,不直接更新 `state`,而是返回新的对象这就保证了 Model 的 `state` 是 [Immutable](https://en.wikipedia.org/wiki/Immutable_object) 的。 Modern.js 默认也支持了以 Mutable 的方式操作 `state`(基于 [Immer](https://github.com/immerjs/immer) 实现)。 如下可以把 `add` 函数改造成 Mutable 方式操作 `state`: ```ts import { model } from '@modern-js/runtime/model'; const countModel = model("count").define({ state: { value: 1 }, actions: { add(state) { state += 1; } } }); export default countModel; ``` 上面就是 Model 的创建,你可能还想了解:[如何使用 Model](./use-model) :::info 补充信息 相关 API 的更多介绍,请参考[这里](/docs/apis/runtime/model/model_) :::