@rc-component/trigger
Version:
base abstract trigger component for react
28 lines (27 loc) • 592 B
JavaScript
import * as React from 'react';
export default function useDelay() {
const delayRef = React.useRef(null);
const clearDelay = () => {
if (delayRef.current) {
clearTimeout(delayRef.current);
delayRef.current = null;
}
};
const delayInvoke = (callback, delay) => {
clearDelay();
if (delay === 0) {
callback();
} else {
delayRef.current = setTimeout(() => {
callback();
}, delay * 1000);
}
};
// Clean up on unmount
React.useEffect(() => {
return () => {
clearDelay();
};
}, []);
return delayInvoke;
}