Dva model层的自己的理解

刚接触Dva的时候,对于model感觉一片茫然,看不懂不知道是什么意思。在之后的公司一个项目中慢慢的对model有了基本的理解。

model.js:

model层一般包含几个部分:

namespacemodel的名字,用来在页面中找到要调用哪一个model,就想id一样。

state: 用来存放数据的地方。

subscriptions:在我看来就是绑定监听页面的,只有进入监听的页面才会触发,且在当前页面只会触发一次 列如:

subscriptions: {

setup ({ dispatch, history }) {

history.listen((location) => {//监听

if (location.pathname === '/storeManage/storeInfo') {//当进入这个页面的时候,就会调用下面的dispatch方法。

dispatch({

type: 'add', 

payload:

location.query.id,

})}})},},

reducers:方法,经常就是调用来把页面,后台传来的值存入到state中:列如:

reducers:{

addSuccess(state,{payload:value}){

return {...state,...value}

//把传的值存入到state中

},

effects:异步的方法调用 例如:

effects: {

//上面监听进入storeManage/storeInfo这个页面,就会调用add这个方法:{payload}这里传的指就是上面payload的值:location.query.id,

* add ({ payload,}, { call, put }) {

const data = yield call(add, payload)

//yield call(add, payload) 异步请求,向add接口发出请求,传参为payload的值,data可以接受到后台传来的数据

if (data.code==200) {

//如果后台返回的状态码为200,就会执行,addSuccess方法,上面已经说了是把值传入到state中,这里就把后台请求到的数据data赋值给list 存入了state中,那样就可以在页面中通过调用state值获取到后台的数据了

yield put({

type: 'addSuccess',

payload: {

list:data

},

})

} else {

throw data

}

}

},

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------如遇到问题:+WX:WAZJ-0508,及时联系---------------------------------------------------------------------------------------------------------------------------------------------------

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeng__Y1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值