dva和UmiJs结合使用教程:effects,reducer,dispatch

dva使用

dva和UmiJs结合的官方文档:dva | UmiJS

准备工作

1.预先定义好model数据仓库信息,namespace表示model仓库名,state表示model仓库中需要用到的数据。

 const Model = {
     namespace: 'coursewareName',
     state: {
         coursewareList: [],
         total: 0,
     },

2.绑定组件(CoursewareManage)与数据仓库(coursewareName)

 const mapStatetoProps = ({ coursewareName }) => {
   return { coursewareName }
 }
 export default connect(mapStatetoProps)(CoursewareManage)

数据更新过程:

1.首先通过调用函数等操作发送dispatch请求

 const getCoursewareList = (pageSize, current, order) => {
     setIsLoading(true)
     dispatch({
         type: 'coursewareName/getCoursewareList',
         payload: {
             pageSize,
             current,
             order,
         },
         callback: () => {
             setIsLoading(false)
         },
     })
 }

2.由dispatch执行model中的effects对应的函数,在effects函数中调用service函数,通过异步方式从后端中获取到所需数据

 effects: {
     *getCoursewareList({ payload, callback }, { call, put }) {
         const res = yield call(getRemoteCoursewareList, payload)
         yield put({
             type: 'saveCoursewareList',
             payload: res,
         })
         if (callback) callback()
     },
 },

3.获取到的数据传递给reducers中的函数,通过同步方式更新model中的state数据信息

 reducers: {
     saveCoursewareList(state, { payload }) {
         //console.log('reducers:', payload)
         return {
             ...state,
             coursewareList: payload.data,
             total: payload.total,
         }
     },
 },

5.state数据更新后,由于数据已绑定组件,react会重新渲染组件ui

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值