use-lodash-debounce
Version:
Custom react hooks for lodash debounce.
31 lines (28 loc) • 1.1 kB
JavaScript
import { useCallback, useEffect, useState, useRef } from 'react';
import debounce from 'lodash.debounce';
function useDebouncedCallback(callback, delay, options) {
if (delay === void 0) { delay = 0; }
return useCallback(debounce(callback, delay, options), [
callback,
delay,
options,
]);
}
function useDebounce(value, delay, options) {
if (delay === void 0) { delay = 0; }
var previousValue = useRef(value);
var _a = useState(value), current = _a[0], setCurrent = _a[1];
var debouncedCallback = useDebouncedCallback(function (value) { return setCurrent(value); }, delay, options);
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;
}
export { useDebouncedCallback, useDebounce };
//# sourceMappingURL=index.es.js.map