UNPKG

wix-style-react

Version:
29 lines (28 loc) 1.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = require("react"); var _debounce2 = _interopRequireDefault(require("lodash/debounce")); /** A hook for creating a debounced callback function */ var useDebouncedCallback = function useDebouncedCallback(/** any function you want to debounce */ cb, /** dependencies your callback relies on. * Callback will be reevaluated when dependencies change - * (same as React's useCallback hook) */ dependencies) { var debounceMs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200; var debounceFn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _debounce2.default; var callbackRef = (0, _react.useRef)(cb); // eslint-disable-next-line react-hooks/exhaustive-deps var debouncedCallback = (0, _react.useCallback)(debounceFn(function () { callbackRef.current(...arguments); }, debounceMs), [debounceMs]); // update callback function when its dependencies change (0, _react.useEffect)(() => { callbackRef.current = cb; }, [cb, dependencies]); return debouncedCallback; }; var _default = exports.default = useDebouncedCallback; //# sourceMappingURL=useDebouncedCallback.js.map