UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

24 lines 700 B
import { useCallback, useRef } from 'react'; import { useImmutableCallback } from './useImmutableCallback'; /** * Run callback after delay with knob to cancel * * When set new callback, previous will reset if it still did not run */ export var useDelayCallback = function () { var timerRef = useRef(null); var reset = useCallback(function () { if (timerRef.current !== null) { window.clearTimeout(timerRef.current); timerRef.current = null; } }, []); var set = useImmutableCallback(function (handler, time) { if (time === void 0) { time = 0; } reset(); timerRef.current = window.setTimeout(handler, time); }, [reset]); return [set, reset]; };