UNPKG

ahooks

Version:
22 lines (21 loc) 636 B
import { useCallback, useEffect, useRef } from 'react'; import useMemoizedFn from '../useMemoizedFn'; import { isNumber } from '../utils'; const useTimeout = (fn, delay) => { const timerCallback = useMemoizedFn(fn); const timerRef = useRef(null); const clear = useCallback(() => { if (timerRef.current) { clearTimeout(timerRef.current); } }, []); useEffect(() => { if (!isNumber(delay) || delay < 0) { return; } timerRef.current = setTimeout(timerCallback, delay); return clear; }, [delay]); return clear; }; export default useTimeout;