@techabl/core-hooks
Version:
35 lines (34 loc) • 1.17 kB
JavaScript
;
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;