This commit is contained in:
2026-04-25 16:36:34 +08:00
commit db90e7579b
1876 changed files with 189777 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
import { useCallback, useEffect, useRef } from 'react';
import { useUpdateRef } from './useUpdateRef';
export function useInterval(
fn: () => void,
delay: number | undefined,
options?: {
immediate?: boolean;
}
) {
const immediate = options?.immediate;
const fnRef = useUpdateRef(fn);
const timerRef = useRef<number>();
useEffect(() => {
if (typeof delay !== 'number' || delay < 0) {
return;
}
if (immediate) {
fnRef.current();
}
timerRef.current = window.setInterval(() => {
fnRef.current();
}, delay);
return () => {
if (timerRef.current) {
window.clearInterval(timerRef.current);
}
};
}, [delay]);
const clear = useCallback(() => {
if (timerRef.current) {
window.clearInterval(timerRef.current);
}
}, []);
return clear;
}