bindActionCreators源码分析bindActionCreators是redux提供的一个辅助方法,可以让我们以方法的形式调用action。同时,自动调度相应的动作。这个模块的代码非常简单。只要了解了Function.prototype.apply的使用,就可以清楚地理解这个模块中的每一行代码。由于这个模块的内容有点少,我们直接分析源码。functionbindActionCreator(actionCreator,dispatch){//这个函数的主要作用是返回一个函数。当我们调用返回的函数时,它会自动派发相应的action//这块其实可以改成下面的形式更好//returnfunction(...args){returndispatch(actionCreator.apply(this,args))}returnfunction(){returndispatch(actionCreator.apply(this,arguments))}}/**参数说明:actionCreators:动作创建函数,可以是单个函数也可以是一个对象,这个对象的所有元素都是actioncreatefunctiondispatch:store.dispatchmethod*/exportdefaultfunctionbindActionCreators(actionCreators,dispatch){//如果actionCreators是一个函数,调用bindActionCreator方法绑定动作创建函数并调度if(typeofactionCreators==='function'){returnbindActionCreator(actionCreators,dispatch)}//actionCreators必须是函数或对象类型之一,不能为nullif(typeofactionCreators!=='object'||actionCreators===null){thrownewError(`bindActionCreators期望一个对象或函数,而不是收到${actionCreators===null?'null':actionCreators类型}。`+`Did你写的是"importActionCreatorsfrom"而不是"import*asActionCreatorsfrom"?`)}//获取所有动作创建函数的名称constkeys=Object.keys(actionCreators)//保存调度和动作创建函数用于绑定后续集合constboundActionCreators={}for(leti=0;i
