UNPKG

@gravitywelluk/react-hooks

Version:
28 lines (27 loc) 1 kB
"use strict"; 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;