import { useCallback, useRef } from 'react'; import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts'; export function useEventCallback(fn: (...args: Args) => R) { const ref = useRef(() => { throw new Error('Cannot call an event handler while rendering.'); }); useIsomorphicLayoutEffect(() => { ref.current = fn; }, [fn]); return useCallback((...args: Args) => ref.current(...args), [ref]); }