* applied eslint * add locales and lint the project * removed error boundary * updated locales * fix min files * fix locales
19 lines
595 B
TypeScript
19 lines
595 B
TypeScript
import { useRef, useEffect } from 'react';
|
|
|
|
export default function useCancelableTimeout(
|
|
onTimeout: () => void,
|
|
onCancel: () => void,
|
|
delay: number,
|
|
): [() => void, () => void] {
|
|
const idRef = useRef<ReturnType<typeof setTimeout>>();
|
|
const triggerTimeout = () => {
|
|
clearTimeout(idRef.current);
|
|
idRef.current = setTimeout(onTimeout, delay);
|
|
};
|
|
const cancelTimeout = () => {
|
|
clearTimeout(idRef.current);
|
|
onCancel();
|
|
};
|
|
useEffect(() => () => clearTimeout(idRef.current), []); // auto-cancel without callback (on clean)
|
|
return [triggerTimeout, cancelTimeout];
|
|
}
|