UNPKG

use-lodash-debounce-throttle

Version:

Bring debounce & throttle of lodash version to react-hooks

47 lines (38 loc) 1.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = require("react"); var _useStableMemo = _interopRequireDefault(require("./use-stable-memo")); function createCancelableHook(createFn, depFn) { return function (fn, wait, options, deps) { var compareParams = depFn(wait, options).concat(deps || []); var debouncedFn = (0, _react.useRef)(undefined); var fnRef = (0, _react.useRef)(fn); fnRef.current = fn; function createDebounce() { return createFn(function () { return fnRef.current && fnRef.current.apply(fnRef, arguments); }, wait, options); } (0, _useStableMemo["default"])(function () { if (debouncedFn.current) { // only call when update debouncedFn.current.cancel(); } debouncedFn.current = createDebounce(); }, compareParams); (0, _react.useEffect)(function () { return function () { if (debouncedFn.current) { debouncedFn.current.cancel(); } }; }, []); return debouncedFn.current; }; } var _default = createCancelableHook; exports["default"] = _default;