Redux总结4:bindactioncreators的用法

今天看官方redux中的todomvc这个实例,找不到在哪里调用store.dispatch这个方法,最后在containers中的App.js文件中的mapDispatchToProps中发现,我看看一下他如何调用:
这里写图片描述
有代码我们可以看到是调用了bindActionCreators方法把action绑定到了connect方法中,其中connect方法的作用是连接react组件和redux store,也就是说通过connect方法子组件可以获取store中的state和dispatch。

感觉还是没找到在哪调用的dispatch方法,所以把注意力集中在bindActionCreators方法中,搜了下看到一些解释:bindActionCreators的作用是将一个或多个action和dispatch组合起来生成mapDispatchToProps需要生成的内容。

看代码:

不使用bindActionCreators时候:

function mapDispatchToProps(dispatch) {
  return {
    onIncrement: () => dispatch(increment())
  };
}

使用时:

let actions = {
  addItem:  {
    type: types.ADD_ITEM,
    text
  }
}

bindActionCreators(actions, dispatch); 
 @return {addItem:  dispatch({ type: types.ADD_ITEM, text })}

可以看到其实使用了bindActionCreators其实就是把多个action还是用dispatch调用,这样就知道了是在

containers中的App.js中使用redux的connect方法获取store中的state数据和dispatch方法,然后action中声明好类型,然后再通过js事件去触发导出的action方法,因为在bindActionCreators方法中已经把actions和dispatch合并(相当于dispatch({type:type.ADD_ITEM, text})),这样就相当于在containers中这样调用dispatch去改变store中的数据:

store.dispatch({ type: types.ADD_ITEM, text })

这样也就理解了redux说的state在其他地方是只读的,只有store中可以修改的概念了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值