From 1c3299f4ce42d32e62b21861947682071d205850 Mon Sep 17 00:00:00 2001 From: rozhkovs Date: Thu, 28 Sep 2023 15:29:04 +0700 Subject: [PATCH] fix: adapt hooks to work in strict mode --- src/useInit.ts | 3 +-- src/useIsFirstRender.ts | 9 ++++----- src/useMemoArray.ts | 3 +-- src/useMemoObject.ts | 3 +-- src/usePrevious.ts | 9 +++++---- src/useStableCallback.ts | 3 +-- src/useStateRef.ts | 3 +-- 7 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/useInit.ts b/src/useInit.ts index 7136521..f844326 100644 --- a/src/useInit.ts +++ b/src/useInit.ts @@ -2,8 +2,7 @@ import {useMemo} from 'react'; import {EMPTY_ARRAY} from 'default-values'; const useInit = (creator: () => T) => { - // eslint-disable-next-line react-hooks/exhaustive-deps - return useMemo(creator, EMPTY_ARRAY); + return useMemo(creator, EMPTY_ARRAY); // eslint-disable-line react-hooks/exhaustive-deps }; export default useInit; diff --git a/src/useIsFirstRender.ts b/src/useIsFirstRender.ts index baf490d..5401b9e 100644 --- a/src/useIsFirstRender.ts +++ b/src/useIsFirstRender.ts @@ -1,12 +1,11 @@ -import {useRef} from 'react'; +import {useEffect, useRef} from 'react'; const useIsFirstRender = () => { const isFirst = useRef(true); - if (isFirst.current) { + useEffect(() => { isFirst.current = false; - return true; - } - return false; + }); + return isFirst.current; }; export default useIsFirstRender; diff --git a/src/useMemoArray.ts b/src/useMemoArray.ts index 153f16e..5503804 100644 --- a/src/useMemoArray.ts +++ b/src/useMemoArray.ts @@ -4,8 +4,7 @@ import useChangeCounter from './useChangeCounter'; const useMemoArray = (arr: T): T => { const depsVal = useChangeCounter(arr, isEqual); - // eslint-disable-next-line react-hooks/exhaustive-deps - return useMemo(() => arr, [depsVal]); + return useMemo(() => arr, [depsVal]); // eslint-disable-line react-hooks/exhaustive-deps }; export default useMemoArray; diff --git a/src/useMemoObject.ts b/src/useMemoObject.ts index 75a1b94..d756df3 100644 --- a/src/useMemoObject.ts +++ b/src/useMemoObject.ts @@ -4,8 +4,7 @@ import useChangeCounter from './useChangeCounter'; const useMemoObject = (obj: T) => { const depsVal = useChangeCounter(Object.values(obj), isEqual); - // eslint-disable-next-line react-hooks/exhaustive-deps - return useMemo(() => obj, [depsVal]); + return useMemo(() => obj, [depsVal]); // eslint-disable-line react-hooks/exhaustive-deps }; export default useMemoObject; diff --git a/src/usePrevious.ts b/src/usePrevious.ts index f18b20b..0f1de33 100644 --- a/src/usePrevious.ts +++ b/src/usePrevious.ts @@ -1,10 +1,11 @@ -import {useRef} from 'react'; +import {useEffect, useRef} from 'react'; const usePrevious = (value: T): T | undefined => { const ref = useRef(undefined); - const temp = ref.current; - ref.current = value; - return temp; + useEffect(() => { + ref.current = value; + }); + return ref.current; }; export default usePrevious; diff --git a/src/useStableCallback.ts b/src/useStableCallback.ts index 3346224..24d9f90 100644 --- a/src/useStableCallback.ts +++ b/src/useStableCallback.ts @@ -14,8 +14,7 @@ const useStableCallback = ( ref.current = callback; return useCallback( (...params: any[]) => ref.current?.(...params), - // eslint-disable-next-line react-hooks/exhaustive-deps - EMPTY_ARRAY, + EMPTY_ARRAY, // eslint-disable-line react-hooks/exhaustive-deps ); }; diff --git a/src/useStateRef.ts b/src/useStateRef.ts index 627f20a..f3de8a3 100644 --- a/src/useStateRef.ts +++ b/src/useStateRef.ts @@ -19,8 +19,7 @@ function useStateRef(initialState: S | (() => S) | undefined) { ref.current = typeof val === 'function' ? (val as any)(ref.current) : val; setState(ref.current); }, - // eslint-disable-next-line react-hooks/exhaustive-deps - EMPTY_ARRAY, + EMPTY_ARRAY, // eslint-disable-line react-hooks/exhaustive-deps ); return [state, dispatch, ref];