@wordpress/compose
Version:
WordPress higher-order components (HOCs).
37 lines (30 loc) • 957 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useDebounce;
var _lodash = require("lodash");
var _useMemoOne = require("use-memo-one");
var _element = require("@wordpress/element");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Debounces a function with Lodash's `debounce`. A new debounced function will
* be returned and any scheduled calls cancelled if any of the arguments change,
* including the function to debounce, so please wrap functions created on
* render in components in `useCallback`.
*
* @param {...any} args Arguments passed to Lodash's `debounce`.
*
* @return {Function} Debounced function.
*/
function useDebounce(...args) {
const debounced = (0, _useMemoOne.useMemoOne)(() => (0, _lodash.debounce)(...args), args);
(0, _element.useEffect)(() => () => debounced.cancel(), [debounced]);
return debounced;
}
//# sourceMappingURL=index.js.map