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;
 }