From 256a7537b3c4433f24cb1920ba0c7fed3f6bac5e Mon Sep 17 00:00:00 2001 From: ice <49827327+GetWebHB@users.noreply.github.com> Date: Tue, 5 Mar 2024 20:32:01 +0800 Subject: [PATCH] refactor(useRafInterval): optimize useEffect cleanup fn (#2426) --- packages/hooks/src/useRafInterval/index.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/hooks/src/useRafInterval/index.ts b/packages/hooks/src/useRafInterval/index.ts index e39c8c1774..15ad94226c 100644 --- a/packages/hooks/src/useRafInterval/index.ts +++ b/packages/hooks/src/useRafInterval/index.ts @@ -51,6 +51,12 @@ function useRafInterval( const fnRef = useLatest(fn); const timerRef = useRef<Handle>(); + const clear = useCallback(() => { + if (timerRef.current) { + clearRafInterval(timerRef.current); + } + }, []); + useEffect(() => { if (!isNumber(delay) || delay < 0) { return; @@ -61,19 +67,9 @@ function useRafInterval( timerRef.current = setRafInterval(() => { fnRef.current(); }, delay); - return () => { - if (timerRef.current) { - clearRafInterval(timerRef.current); - } - }; + return clear; }, [delay]); - const clear = useCallback(() => { - if (timerRef.current) { - clearRafInterval(timerRef.current); - } - }, []); - return clear; }