UNPKG

use-lodash-debounce

Version:
38 lines (32 loc) 1.35 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var react = require('react'); var debounce = _interopDefault(require('lodash.debounce')); function useDebouncedCallback(callback, delay, options) { if (delay === void 0) { delay = 0; } return react.useCallback(debounce(callback, delay, options), [ callback, delay, options, ]); } function useDebounce(value, delay, options) { if (delay === void 0) { delay = 0; } var previousValue = react.useRef(value); var _a = react.useState(value), current = _a[0], setCurrent = _a[1]; var debouncedCallback = useDebouncedCallback(function (value) { return setCurrent(value); }, delay, options); react.useEffect(function () { // doesn't trigger the debounce timer initially if (value !== previousValue.current) { debouncedCallback(value); previousValue.current = value; // cancel the debounced callback on clean up return debouncedCallback.cancel; } }, [value]); return current; } exports.useDebouncedCallback = useDebouncedCallback; exports.useDebounce = useDebounce; //# sourceMappingURL=index.js.map