@gravitywelluk/react-hooks
Version:
Library of commonly used React hooks
28 lines (27 loc) • 1 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useDebounce = void 0;
const react_1 = __importDefault(require("react"));
/**
* Use debounce hook
*/
const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = react_1.default.useState(value);
react_1.default.useEffect(() => {
// Update debounced value after delay
// if timeout cleared before callback triggered, value not updated
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
// Re-running the effect clears the previous timeout and starts a new one
return () => {
clearTimeout(handler);
};
// Only re-run effect if value or delay changes
}, [value, delay]);
return debouncedValue;
};
exports.useDebounce = useDebounce;
;