mirror of
https://github.com/hamster1963/nezha-dash.git
synced 2025-04-24 21:10:45 +08:00
feat: optimize time display rendering with requestAnimationFrame
This commit is contained in:
parent
8fbe50fd8d
commit
4171829a15
@ -30,16 +30,32 @@ const useCurrentTime = () => {
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
const timer = setInterval(() => {
|
||||
const now = DateTime.now().setLocale("en-US")
|
||||
setTime({
|
||||
hh: now.hour,
|
||||
mm: now.minute,
|
||||
ss: now.second,
|
||||
})
|
||||
}, 1000)
|
||||
let animationFrameId: number
|
||||
let lastSecond = DateTime.now().setLocale("en-US").second
|
||||
|
||||
return () => clearInterval(timer)
|
||||
const updateTime = () => {
|
||||
const now = DateTime.now().setLocale("en-US")
|
||||
const currentSecond = now.second
|
||||
|
||||
if (currentSecond !== lastSecond) {
|
||||
lastSecond = currentSecond
|
||||
setTime({
|
||||
hh: now.hour,
|
||||
mm: now.minute,
|
||||
ss: currentSecond,
|
||||
})
|
||||
}
|
||||
|
||||
animationFrameId = requestAnimationFrame(updateTime)
|
||||
}
|
||||
|
||||
animationFrameId = requestAnimationFrame(updateTime)
|
||||
|
||||
return () => {
|
||||
if (animationFrameId) {
|
||||
cancelAnimationFrame(animationFrameId)
|
||||
}
|
||||
}
|
||||
}, [])
|
||||
|
||||
return time
|
||||
|
Loading…
Reference in New Issue
Block a user