react-typed-event
Version:
Type-safe event handling utilities for React
23 lines (22 loc) • 710 B
JavaScript
// src/hooks/usePreservedCallback/index.ts
import { useCallback, useEffect, useRef } from "react";
function usePreservedCallback(callback, deps = []) {
const callbackRef = useRef(callback);
useEffect(() => {
callbackRef.current = callback;
}, [callback]);
return useCallback((...args) => {
return callbackRef.current(...args);
}, deps);
}
// src/hooks/useEventCallback/index.ts
function useEventCallback(...args) {
const last = args.pop();
if (Array.isArray(last)) return usePreservedCallback(args.pop(), last);
if (typeof last === "function") return usePreservedCallback(last);
throw new Error("invalid arguments");
}
export {
useEventCallback
};
//# sourceMappingURL=index.js.map