美文网首页
redux bindActionCreators

redux bindActionCreators

作者: strong9527 | 来源:发表于2017-09-18 14:33 被阅读42次
    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

          本文链接:https://www.haomeiwen.com/subject/tfhbsxtx.html