Netra / frontend /src /hooks /useCountUp.js
chikentikka's picture
plate recog by TrOCR and frontend and some other things updated
f09c2db
Raw
History Blame Contribute Delete
684 Bytes
import { useEffect, useRef, useState } from "react";
// Animate a number from 0 to `target` with an ease-out curve.
export function useCountUp(target, duration = 850) {
const [value, setValue] = useState(0);
const frame = useRef(0);
useEffect(() => {
const start = performance.now();
const tick = (now) => {
const t = Math.min(1, (now - start) / duration);
const eased = 1 - Math.pow(1 - t, 3);
setValue(Math.round(target * eased));
if (t < 1) frame.current = requestAnimationFrame(tick);
};
frame.current = requestAnimationFrame(tick);
return () => cancelAnimationFrame(frame.current);
}, [target, duration]);
return value;
}