@nex-ui/hooks
Version:
A collection of React Hooks for Nex UI components.
22 lines (18 loc) • 624 B
JavaScript
;
var utils = require('@nex-ui/utils');
var react = require('react');
var useLatest = require('./useLatest.cjs');
var useUnmount = require('./useUnmount.cjs');
function useDebounce(fn, options) {
const fnRef = useLatest.useLatest(fn);
const wait = options?.wait ?? 1000;
const debounced = react.useMemo(()=>utils.debounce((...args)=>{
return fnRef.current(...args);
}, wait, options), // eslint-disable-next-line react-hooks/exhaustive-deps
[]);
useUnmount.useUnmount(()=>{
debounced.cancel();
});
return debounced;
}
exports.useDebounce = useDebounce;