UNPKG

use-throttled-effect

Version:
31 lines (23 loc) 983 B
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.useThrottledEffect = undefined; var _react = require('react'); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var useThrottledEffect = exports.useThrottledEffect = function useThrottledEffect(callback, delay) { var deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var lastRan = (0, _react.useRef)(Date.now()); (0, _react.useEffect)(function () { var handler = setTimeout(function () { if (Date.now() - lastRan.current >= delay) { callback(); lastRan.current = Date.now(); } }, delay - (Date.now() - lastRan.current)); return function () { clearTimeout(handler); }; }, [delay].concat(_toConsumableArray(deps))); }; exports.default = useThrottledEffect;