@zohodesk/hooks
Version:
Unified Component Library - Hooks
23 lines (21 loc) • 718 B
JavaScript
import { useCallback, useMemo } from 'react';
export default function bindActions(obj, dispatch) {
/* assume dispatch and object won't change */
return useMemo(() => Object.keys(obj).reduce((res, key) => {
res[key] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return dispatch(obj[key].apply(null, args));
};
return res;
}, {}), []);
/* usecallback need to flat */
// return Object.keys(obj).reduce((res, key) => {
// res[key] = useCallback(
// (...args) => dispatch(obj[key].apply(null, args)),
// []
// );
// return res;
// }, {});
}