use-debounce
Version:
Debounce hook for react
19 lines (18 loc) • 882 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var useDebouncedCallback_1 = require("./useDebouncedCallback");
function useDebounce(value, delay, options) {
var _a = react_1.useState(value), state = _a[0], dispatch = _a[1];
var _b = useDebouncedCallback_1.default(react_1.useCallback(function (value) { return dispatch(value); }, []), delay, options), callback = _b[0], cancel = _b[1];
var previousValue = react_1.useRef(value);
react_1.useEffect(function () {
// We need to use this condition otherwise we will run debounce timer for the first render (including maxWait option)
if (previousValue.current !== value) {
callback(value);
previousValue.current = value;
}
}, [value, callback]);
return [state, cancel];
}
exports.default = useDebounce;