dva 也是 umi 的状态管理器
首先在pages里面的文件夹(例如home文件)中创建一个models文件夹里面放dva
我们整体抛出的是一个对象
对象中namespace代表的是取值的名字 一般是父文件的名字
state是存放一些值
reducers是存放一些方法都是同步的 写法和redux差不多
effects里可以写一写异步的请求方法 利用Generator 的写法
以上都是对象的形式
例如在 effects 里写一个方法(异步的)
payload这个是传的一些值
call 这个是用作异步调用
put 这个是在异步调用完事之后的方法
select 这个是拿它上一次的值
*fetch ({ payload }, { call, put, select }){
const old = yield select(prev => prev.home.data) //上一次的值
const date = yield call(() => SetList(payload)) // 请求接口
yield put({ // 请求完事之后的调用的reducers方法
type: ‘setData’,
payload: […date.list, …old],
})
}
在页面使用的时候(异步):
props.dispatch({
type:‘home/fetch’,//方法在home下的fetch方法
payload:{ 需要传的值
limit:2,
page:1
}
})