From 93e72910abf2dafe5bdff625a21f633afd6e52c5 Mon Sep 17 00:00:00 2001 From: Olzhas Alexandrov Date: Thu, 5 Dec 2019 17:04:09 -0600 Subject: [PATCH 1/2] fix: useUpdate hitting maxInt, failing to trigger rerender Signed-off-by: Olzhas Alexandrov --- src/useUpdate.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/useUpdate.ts b/src/useUpdate.ts index e85142d0..b2b6b4c8 100644 --- a/src/useUpdate.ts +++ b/src/useUpdate.ts @@ -1,9 +1,16 @@ import { useCallback, useState } from 'react'; -const incrementParameter = (num: number): number => ++num; +/** + * MIN & MAX safe integers are literals due to no support in IE + */ +const minInt = -1000000000 +const maxInt = 9007199254740991 +const incrementParameter = (num: number): number => { + return num !== maxInt ? (num += 1) : minInt; +} const useUpdate = () => { - const [, setState] = useState(0); + const [, setState] = useState(minInt); // useCallback with empty deps as we only want to define updateCb once return useCallback(() => setState(incrementParameter), []); }; From ca43b80357568621199892fc10c35af44222f07a Mon Sep 17 00:00:00 2001 From: Vadim Dalecky Date: Fri, 6 Dec 2019 00:14:10 +0100 Subject: [PATCH 2/2] refactor: simplify counter increment in useUpdate --- src/useUpdate.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/useUpdate.ts b/src/useUpdate.ts index b2b6b4c8..d7f0d368 100644 --- a/src/useUpdate.ts +++ b/src/useUpdate.ts @@ -1,16 +1,9 @@ import { useCallback, useState } from 'react'; -/** - * MIN & MAX safe integers are literals due to no support in IE - */ -const minInt = -1000000000 -const maxInt = 9007199254740991 -const incrementParameter = (num: number): number => { - return num !== maxInt ? (num += 1) : minInt; -} +const incrementParameter = (num: number): number => ++num % 1_000_000; const useUpdate = () => { - const [, setState] = useState(minInt); + const [, setState] = useState(0); // useCallback with empty deps as we only want to define updateCb once return useCallback(() => setState(incrementParameter), []); };