UNPKG

use-lodash-debounce

Version:
31 lines (28 loc) 1.1 kB
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