feat: optimize time display rendering with requestAnimationFrame

This commit is contained in:
hamster1963 2025-02-19 14:26:22 +08:00
parent 8fbe50fd8d
commit 4171829a15

View File

@ -30,16 +30,32 @@ const useCurrentTime = () => {
}) })
useEffect(() => { useEffect(() => {
const timer = setInterval(() => { let animationFrameId: number
let lastSecond = DateTime.now().setLocale("en-US").second
const updateTime = () => {
const now = DateTime.now().setLocale("en-US") const now = DateTime.now().setLocale("en-US")
const currentSecond = now.second
if (currentSecond !== lastSecond) {
lastSecond = currentSecond
setTime({ setTime({
hh: now.hour, hh: now.hour,
mm: now.minute, mm: now.minute,
ss: now.second, ss: currentSecond,
}) })
}, 1000) }
return () => clearInterval(timer) animationFrameId = requestAnimationFrame(updateTime)
}
animationFrameId = requestAnimationFrame(updateTime)
return () => {
if (animationFrameId) {
cancelAnimationFrame(animationFrameId)
}
}
}, []) }, [])
return time return time