@shopgate/engage
Version:
Shopgate's ENGAGE library.
16 lines (15 loc) • 491 B
JavaScript
import * as React from 'react';
const useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
/**
* https://github.com/facebook/react/issues/14099#issuecomment-440013892
*
* @param {Function} fn function
* @returns {Function}
*/
export default function useEventCallback(fn) {
const ref = React.useRef(fn);
useEnhancedEffect(() => {
ref.current = fn;
});
return React.useCallback((...args) => (0, ref.current).apply(void 0, args), []);
}