use-lodash-debounce
Version:
Custom react hooks for lodash debounce.
38 lines (32 loc) • 1.35 kB
JavaScript
;
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