349989153 10 X 10
Last updated: 2018-04-10
349989153:~ Desktop$ node 阅读redux源码--bindActionCreators.js.js

> Post.tags
jsredux源码

> Post.prev
阅读redux源码--createStore.js

> Post.next
阅读redux源码--applyMiddleware.js
阅读redux源码--bindActionCreators.js

bindActionCreators是把action和dispatch绑定,这样本来2步走————创建action,然后dispatch————的代码,就变成了1步走————创建action之后马上dispatch。


bindActionCreators.js

接收2个参数:actionCreators和dispatch。actionCreators应该是个function或者一个object,dispatch应该是个function。


当actionCreators是个function时:
bindActionCreators得到的结果是一个function,这个function把参数传给actionCreators之后,直接dispatch了。所以是把actionCreators升级成会直接dispatch的actionCreators


当actionCreators是个object时:
返回boundActionCreators,这是一个object。对actionCreators进行遍历,这时候问题转化成了当actionCreators是个function时,于是和上面一样的处理,把当前的actionCreator升级成会直接dispatch的actionCreator,然后赋给boundActionCreators。


总结一句话:

之前的actionCreator创建了action之后,还要用dispatch来分发掉这个action,所以代码里可能会有非常多的dispatch。而bindActionCreators,就是把actionCreator和dispatch绑定在一起,升级成会直接dispatch的