react函数组件怎么使用umi/dva中的useModel()
时间: 2024-09-06 09:05:04 浏览: 61
在使用 `umi` 或 `dva` 这类基于 React 的框架时,`useModel()` 是一个 Hook,用于在函数组件中订阅并使用 `dva` 模型。`dva` 是一个轻量级的前端框架,它基于 React,提供了一套简单易用的状态管理方式。使用 `useModel()` 可以非常方便地连接到 `dva` 定义的 model,实现状态的订阅和更新。
在函数组件中使用 `useModel()` 的基本步骤如下:
1. 首先,确保你已经在项目中引入了 `dva` 相关的包,并且使用了 `dva` 配置应用。
2. 然后,在你的函数组件文件中引入 `useModel`。
3. 在函数组件内部调用 `useModel()`,传入你想要使用的 model 的 `namespace` 和对应的 `state`、`dispatch` 的名称。
4. `useModel()` 会返回一个包含 `state` 和 `dispatch` 的数组,你可以通过解构的方式来使用它们。
下面是一个使用 `useModel()` 的示例代码:
```javascript
import React from 'react';
import { useModel } from 'dva';
function MyComponent(props) {
// 假设 'counter' 是定义在 dva model 中的 namespace
const [counterState, { increment }] = useModel('counter');
return (
<div>
<p>{counterState.count}</p>
<button onClick={increment}>+</button>
</div>
);
}
```
在这个例子中,`useModel('counter')` 用于订阅 `counter` 这个 model 的状态,`counterState` 将会包含 `counter` model 中定义的状态。`increment` 是一个从 `counter` model 中导出的 `dispatch` 函数,用于更新状态。
阅读全文