You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.9 KiB
						
					
					
				import { kindOf } from './utils/kindOf'
 | 
						|
 | 
						|
function bindActionCreator(actionCreator, dispatch) {
 | 
						|
  return function () {
 | 
						|
    return dispatch(actionCreator.apply(this, arguments))
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Turns an object whose values are action creators, into an object with the
 | 
						|
 * same keys, but with every function wrapped into a `dispatch` call so they
 | 
						|
 * may be invoked directly. This is just a convenience method, as you can call
 | 
						|
 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
 | 
						|
 *
 | 
						|
 * For convenience, you can also pass an action creator as the first argument,
 | 
						|
 * and get a dispatch wrapped function in return.
 | 
						|
 *
 | 
						|
 * @param {Function|Object} actionCreators An object whose values are action
 | 
						|
 * creator functions. One handy way to obtain it is to use ES6 `import * as`
 | 
						|
 * syntax. You may also pass a single function.
 | 
						|
 *
 | 
						|
 * @param {Function} dispatch The `dispatch` function available on your Redux
 | 
						|
 * store.
 | 
						|
 *
 | 
						|
 * @returns {Function|Object} The object mimicking the original object, but with
 | 
						|
 * every action creator wrapped into the `dispatch` call. If you passed a
 | 
						|
 * function as `actionCreators`, the return value will also be a single
 | 
						|
 * function.
 | 
						|
 */
 | 
						|
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, but instead received: '${kindOf(
 | 
						|
        actionCreators
 | 
						|
      )}'. ` +
 | 
						|
        `Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?`
 | 
						|
    )
 | 
						|
  }
 | 
						|
 | 
						|
  const boundActionCreators = {}
 | 
						|
  for (const key in actionCreators) {
 | 
						|
    const actionCreator = actionCreators[key]
 | 
						|
    if (typeof actionCreator === 'function') {
 | 
						|
      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch)
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return boundActionCreators
 | 
						|
}
 |