hooks-me
Version:
<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>
27 lines (26 loc) • 941 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var useTimeout = function (callback, delay) {
var callbackRef = (0, react_1.useRef)(callback);
var timeoutRef = (0, react_1.useRef)();
(0, react_1.useEffect)(function () {
callbackRef.current = callback;
}, [callback]);
var set = (0, react_1.useCallback)(function () {
timeoutRef.current = setTimeout(function () { return callbackRef.current(); }, delay);
}, [delay]);
var clear = (0, react_1.useCallback)(function () {
timeoutRef.current && clearTimeout(timeoutRef.current);
}, []);
(0, react_1.useEffect)(function () {
set();
return clear;
}, [delay, set, clear]);
var reset = (0, react_1.useCallback)(function () {
clear();
set();
}, [clear, set]);
return { reset: reset, clear: clear };
};
exports.default = useTimeout;