@livelike/react-native
Version:
LiveLike React Native package
23 lines (19 loc) • 495 B
text/typescript
import { useRef, useCallback } from 'react';
export type useDebounceArgs = {
callback: (...args) => void;
timer: number;
};
export function useDebounce({ callback, timer }: useDebounceArgs) {
const timeoutRef = useRef(null);
return useCallback(
(...args) => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
timeoutRef.current = setTimeout(() => {
callback(...args);
}, timer);
},
[callback, timer, timeoutRef]
);
}