Ant Design中的dva流程梳理

文章目录

功能

dva流程简单来说就是model层和view层的分离,数据的存储不放在组件的state中,单独拎出来放在model中。项目开发过程中个人感觉全局性数据(比如用户名,用户权限)可以采用这种方法实现。

本例中page层页面List.js负责显示,数据和更新数据的方法放在model层中的DataList.js中。实现效果如下:

在这里插入图片描述

代码

  • page层:src/routes/List.js
import React from 'react';
//dva是1种分层想,将page(routes/List.js)和model(models/ListData.js)进行分层
//其中page只负责页面显示,数据在model中进行处理
import {
   connect} from 'dva';


const namespace = 'list';

//说明:第1个回调函数将page层和model层进行连接,返回model中的数据
//并且将返回的数据绑定到this.props中,下面通过this.props.dataList拿数据
//注意不是this.state.dataList
//第2个回调函数,将定义的函数绑定到this.props中,可以调用model层中定义的函数
//通过this.props.add()操作,不是this.state.add()

//*******************以下是第1种写法,直接把2个回调函数写入*******************
//dva的作用是connect model和page
//2个回调函数作为参数
//参数1:将page和model进行连接,返回modle中的数据,并且将返回的数据绑定到this.props
//参数2:将返回的函数绑定到this.props
@connect((state) => {
   //state是整个项目全局的state,通过命名空间获取指定的model的state
  return {
   //返回1个对象,将返回的值绑定到this.props中
    dataList: state[namespace].data,
    maxNum: state[namespace].maxNum
  }
}, (dispatch) => {
   //dispatch的作用:可以调用model层定义的函数
  return {
   //将返回的函数,绑定到this.props中
    add() {
   
      dispatch({
   
        type: 'list/addNewData'  //model的namespace + model中定义的函数名
      });
    },
    init: () => {
   //箭头函数写法
      dispatch({
   
        type: 'list/initData'
      });
    }
    //下面可以定义多个函数
  }
})
//*******************以上是第1种写法*******************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值