UNPKG

@react-hook/throttle

Version:

A React hook for throttling setState and other callbacks

3 lines (2 loc) 1.03 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e=e||self).UseThrottle={},e.React)}(this,(function(e,t){"use strict";function r(e,r,n){function c(){s.current=0,d()}void 0===r&&(r=30),void 0===n&&(n=0);var f,o,i=(f=e,(o=t.useRef(f)).current=f,o),a=1e3/r,s=t.useRef(0),l=t.useRef(),d=function(){return l.current&&clearTimeout(l.current)},p=[r,n,i];return t.useEffect((function(){return c}),p),t.useCallback((function(){var e=arguments,t=u(),r=function(){s.current=t,d(),i.current.apply(null,e)},c=s.current;if(n&&0===c)return r();if(t-c>a){if(c>0)return r();s.current=t}d(),l.current=setTimeout((function(){r(),s.current=0}),a)}),p)}var n="undefined"!=typeof performance?performance:Date,u=function(){return n.now()};e.useThrottle=function(e,n,u){var c=t.useState(e);return[c[0],r(c[1],n,u)]},e.useThrottleCallback=r,Object.defineProperty(e,"__esModule",{value:1})})); //# sourceMappingURL=use-throttle.js.map