UNPKG

doloresqui

Version:
31 lines (23 loc) 673 B
import { useCallback, useEffect, useRef } from "react"; export default function useTimeout(callback, delay) { const callbackRef = useRef(callback); const timeoutRef = useRef<any>(); useEffect(() => { callbackRef.current = callback; }, [callback]); const set = useCallback(() => { timeoutRef.current = setTimeout(() => callbackRef.current(), delay); }, [delay]); const clear = useCallback(() => { timeoutRef.current && clearTimeout(timeoutRef.current); }, []); useEffect(() => { set(); return clear; }, [delay, set]); const reset = useCallback(() => { clear(); set(); }, [clear, set]); return { reset, clear }; }