From d03f40d745d903c852a5165017b0314f14c84fa4 Mon Sep 17 00:00:00 2001 From: kongmoumou Date: Mon, 20 Feb 2023 20:31:35 +0800 Subject: [PATCH 1/2] fix: use memoized fn in use-interval --- packages/hooks/src/useInterval/index.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/hooks/src/useInterval/index.ts b/packages/hooks/src/useInterval/index.ts index 3c96b9f183..b16e917603 100644 --- a/packages/hooks/src/useInterval/index.ts +++ b/packages/hooks/src/useInterval/index.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useRef } from 'react'; -import useLatest from '../useLatest'; +import useMemoizedFn from '../useMemoizedFn'; import { isNumber } from '../utils'; function useInterval( @@ -11,7 +11,7 @@ function useInterval( ) { const { immediate } = options; - const fnRef = useLatest(fn); + const cb = useMemoizedFn(fn); const timerRef = useRef(null); useEffect(() => { @@ -19,17 +19,15 @@ function useInterval( return; } if (immediate) { - fnRef.current(); + cb(); } - timerRef.current = setInterval(() => { - fnRef.current(); - }, delay); + timerRef.current = setInterval(cb, delay); return () => { if (timerRef.current) { clearInterval(timerRef.current); } }; - }, [delay]); + }, [delay, cb]); const clear = useCallback(() => { if (timerRef.current) { From 8e7e7c42ff9e5180fd6aefc531e929d080e25230 Mon Sep 17 00:00:00 2001 From: kongmoumou Date: Fri, 3 Mar 2023 09:42:01 +0800 Subject: [PATCH 2/2] fix: fn naming --- packages/hooks/src/useInterval/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/hooks/src/useInterval/index.ts b/packages/hooks/src/useInterval/index.ts index b16e917603..62239452b8 100644 --- a/packages/hooks/src/useInterval/index.ts +++ b/packages/hooks/src/useInterval/index.ts @@ -11,7 +11,7 @@ function useInterval( ) { const { immediate } = options; - const cb = useMemoizedFn(fn); + const timerCallback = useMemoizedFn(fn); const timerRef = useRef(null); useEffect(() => { @@ -19,15 +19,15 @@ function useInterval( return; } if (immediate) { - cb(); + timerCallback(); } - timerRef.current = setInterval(cb, delay); + timerRef.current = setInterval(timerCallback, delay); return () => { if (timerRef.current) { clearInterval(timerRef.current); } }; - }, [delay, cb]); + }, [delay, timerCallback]); const clear = useCallback(() => { if (timerRef.current) {