UNPKG

@techabl/core-hooks

Version:
35 lines (34 loc) 1.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDebounce = void 0; var react_1 = require("react"); var useDebounce = function (callback, delay) { var timeoutRef = (0, react_1.useRef)(null); var debouncedCallback = (0, react_1.useMemo)(function () { var debounce = function (func, wait) { return function (value) { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } timeoutRef.current = setTimeout(function () { if (typeof func === 'function') { func(value); } else { console.error('func is not a function'); } }, wait); }; }; return debounce(callback, delay); }, [callback, delay]); (0, react_1.useEffect)(function () { return function () { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } }; }, []); return debouncedCallback; }; exports.useDebounce = useDebounce;