import { useCallback, useLayoutEffect, useRef } from "react"; // Based on https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md#internal-implementation export function useEvent any>(handler: F): (...args: Parameters) => ReturnType { const handlerRef = useRef(); useLayoutEffect(() => { handlerRef.current = handler; }); return useCallback((...args: Parameters) => { const fn = handlerRef.current!; return fn(...args); }, []); }