mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-25 18:06:15 -04:00
22 lines
512 B
TypeScript
22 lines
512 B
TypeScript
![]() |
import {DependencyList, EffectCallback, useMemo, useRef} from "react";
|
||
|
import {useAnimationFrame} from "./AnimationFrameHook";
|
||
|
|
||
|
const defaultDeps: DependencyList = []
|
||
|
|
||
|
export const useDebounce = (
|
||
|
fn:EffectCallback,
|
||
|
wait = 0,
|
||
|
deps = defaultDeps
|
||
|
):void => {
|
||
|
const isFirstRender = useRef(true)
|
||
|
const render = useAnimationFrame(fn, wait)
|
||
|
|
||
|
useMemo(()=>{
|
||
|
if(isFirstRender.current){
|
||
|
isFirstRender.current = false
|
||
|
return
|
||
|
}
|
||
|
|
||
|
render()
|
||
|
}, deps)
|
||
|
}
|