Files
moemail/app/hooks/use-throttle.ts
beilunyang cc7e5003c5 feat: Init
2024-12-16 01:49:50 +08:00

19 lines
388 B
TypeScript

import { useCallback, useRef } from 'react'
export function useThrottle<T extends (...args: any[]) => void>(
fn: T,
delay: number
): T {
const lastRun = useRef(Date.now())
return useCallback(
((...args) => {
const now = Date.now()
if (now - lastRun.current >= delay) {
fn(...args)
lastRun.current = now
}
}) as T,
[fn, delay]
)
}