export default function bindActionCreators(actionCreators, dispatch) {
//actionCreators是函数的情况下
if (typeof actionCreators === "function") {
return getAutoDispatchActionCreator(actionCreators, dispatch)
}
//actionCreators是对象的情况下
else if (typeof actionCreators === "object") {
const result = {}
for (const key in actionCreators) {
console.log(key);
if (actionCreators.hasOwnProperty(key)) {
const currentAction = actionCreators[key];
//函数的情况下执行
if (typeof currentAction === "function") {
result[key] = getAutoDispatchActionCreator(currentAction, dispatch)
}
}
}
return result;
}
else {
throw new TypeError("must be function or object")
}
}
//辅助函数,增强自动分发dispatch函数
function getAutoDispatchActionCreator(actionCreator, dispatch) {
return function (...args) {
console.log(...args);
const action = actionCreator(...args)
dispatch(action);
}
}