UNPKG

use-debounce

Version:
19 lines (18 loc) 882 B
"use strict"; 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;