dva model里面需要注意的几个点

5 篇文章 0 订阅
1 篇文章 0 订阅

因为我之前一直用vue,vue里面都是直来直往的,没有什么拐弯的东西,用vue的人学dva的时候一定要注意几个点:

1、model相当于vue的vuex,里面包含了但向数据流的所有的控制

2、在vue中我们一般定义一个全局的头部标题字段,并且在mounted中调dispatch改变,但在dva的model中这段分为了两个部分,其中effects是异步修改数据时调用的, 也就是在react的componentDidMount的生命周期里面需要调用的是异步的effects的action,但如果是用户操作的某个方法是,可以直接调用reducers里面的action

3、注意如果在组件中要调用dispatch的话,必须导入connect,并且注入,才可以调用,不然会报不存在的方法

4、dva规定比较强制,如果你是异步的方法必须调用effects的action,绝对不能调用同步的reducers,否则会报错,但同步的操作可以调用异步的effects,但因为是异步的操作,数据有时不会直接变过来,如果是操作的话,建议用reducers的同步

5、2中说effects改变数据时不能直接修改state,要不直接用dispatch改变reducers中的某个值,要不直接将修改put进去,代码如下:

const state = () => ({
topTitle: "我的名字"
});
export default {
namespace: 'user',
state: state(),
effects: {
* getUserList({ payload, request }, { put, titleName }) {
console. log( payload)
yield put({
type: 'update',
payload: {
topTitle: payload. titleName
}
});
}
},
reducers: {
update( state, action ) {
return { ... state, ... action. payload };
}
}
};


componentDidMount() { // 改变标题的名字
this. props. dispatch({ type: 'user/getUserList', payload: {
titleName: '订单详情'
}});
}
个人感觉dva中,或者说react最复杂也就是redux这些,搞明白了之后也就没啥问题了,可能有些理解错误的地方,有看出来望指正
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值