hooks-me
Version:
<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>
25 lines (24 loc) • 794 B
JavaScript
import { useCallback, useEffect, useRef } from "react";
var useTimeout = function (callback, delay) {
var callbackRef = useRef(callback);
var timeoutRef = useRef();
useEffect(function () {
callbackRef.current = callback;
}, [callback]);
var set = useCallback(function () {
timeoutRef.current = setTimeout(function () { return callbackRef.current(); }, delay);
}, [delay]);
var clear = useCallback(function () {
timeoutRef.current && clearTimeout(timeoutRef.current);
}, []);
useEffect(function () {
set();
return clear;
}, [delay, set, clear]);
var reset = useCallback(function () {
clear();
set();
}, [clear, set]);
return { reset: reset, clear: clear };
};
export default useTimeout;