function bindActionCreator(actionCreator, dispatch) {
//其实,bindActionCreators的核心代码就是在这里,让每一个action函数最外层都被store.dispatch包含。
//这样就可以保障action函数在任何地方都可以被调用。
return (...args) => dispatch(actionCreator(...args))
}
//在这里处理actionCreators中的每一个函数,将每一个函数的最外层都包一层store.dispatch
//一调用action函数实际调用的是store.dispatch(action())进行处理。
export default function bindActionCreators(actionCreators, dispatch) {
if (typeof actionCreators === 'function') {
return bindActionCreator(actionCreators, dispatch)
}
if (typeof actionCreators !== 'object' || actionCreators === null) {
throw new Error(
`bindActionCreators expected an object or a function, instead received ${actionCreators === null ? 'null' : typeof actionCreators}. ` +
`Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?`
)
}
const keys = Object.keys(actionCreators)
const boundActionCreators = {}
for (let i = 0; i < keys.length; i++) {
const key = keys[i]
const actionCreator = actionCreators[key]
if (typeof actionCreator === 'function') {
boundActionCreators[key] = bindActionCreator(actionCreator, dispatch)
}
}
return boundActionCreators
}
redux bindActionCreators
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 上代码先 export default function bindActionCreators(actionCre...
- 之前利用知乎日报的api写了react-native的一个入门项目,传送文章地址React Native 项目入门...
- 在上一篇 redux在react-native上使用(一)--加入redux 已成功把redux添加到项目, 现在...
- 本文转自我的博客阅读原文。 整体感知 使用redux-saga封装异步操作 将watchFetchData这个Sa...