zent
Version:
一套前端设计语言和基于React的实现
18 lines (16 loc) • 487 B
text/typescript
import { useRef, useCallback, useEffect } from 'react';
export function useAnimationFramed(callback: () => void) {
const callbackRef = useRef(callback);
const handleRef = useRef<number | null>(null);
useEffect(() => {
callbackRef.current = callback;
}, [callback]);
return useCallback(() => {
if (!handleRef.current) {
handleRef.current = requestAnimationFrame(() => {
handleRef.current = null;
callbackRef.current();
});
}
}, []);
}