From 21b1da7664f05fae8ded43315ecf8189ffbb70d0 Mon Sep 17 00:00:00 2001 From: nklhrstv Date: Fri, 16 Oct 2020 17:09:24 +0300 Subject: [PATCH] call cb in useDeepEqualMemo only when needed --- src/common/useDeepEqualMemo.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/common/useDeepEqualMemo.js b/src/common/useDeepEqualMemo.js index f3ad91680..e0242603f 100644 --- a/src/common/useDeepEqualMemo.js +++ b/src/common/useDeepEqualMemo.js @@ -4,12 +4,16 @@ const React = require('react'); const isEqual = require('lodash.isequal'); const useDeepEqualMemo = (cb, deps) => { - const valueRef = React.useRef(cb()); + const valueRef = React.useRef(); + const mountedRef = React.useRef(false); const prevDepsRef = React.useRef(deps); - if (!isEqual(prevDepsRef.current, deps)) { + if (!mountedRef.current || !isEqual(prevDepsRef.current, deps)) { valueRef.current = cb(); prevDepsRef.current = deps; } + React.useLayoutEffect(() => { + mountedRef.current = true; + }, []); return valueRef.current; };