@uiw/react-tabs-draggable
Version:
Draggable tabs for React.
18 lines (16 loc) • 441 B
text/typescript
import { useLayoutEffect, useMemo, useRef } from 'react';
type Fn<ARGS extends any[], R> = (...args: ARGS) => R;
export const useEventCallback = <A extends any[], R>(fn: Fn<A, R>): Fn<A, R> => {
let ref = useRef<Fn<A, R>>(fn);
useLayoutEffect(() => {
ref.current = fn;
});
return useMemo(
() =>
(...args: A): R => {
const { current } = ref;
return current && current(...args);
},
[],
);
};