@@ -13,9 +13,7 @@ function useSelectorWithStoreAndSubscription(
13
13
store ,
14
14
contextSub
15
15
) {
16
- const [ reduxState , forceRender ] = useState ( store . getState ( ) )
17
- const latestReduxState = useRef ( )
18
- const latestReduxStateIsValid = useRef ( false )
16
+ const [ reduxState , setReduxState ] = useState ( { value : store . getState ( ) } )
19
17
20
18
const subscription = useMemo ( ( ) => new Subscription ( store , contextSub ) , [
21
19
store ,
@@ -33,9 +31,7 @@ function useSelectorWithStoreAndSubscription(
33
31
selector !== latestSelector . current ||
34
32
latestSubscriptionCallbackError . current
35
33
) {
36
- selectedState = selector (
37
- latestReduxStateIsValid . current ? latestReduxState . current : reduxState
38
- )
34
+ selectedState = selector ( reduxState . value )
39
35
} else {
40
36
selectedState = latestSelectedState . current
41
37
}
@@ -62,8 +58,10 @@ function useSelectorWithStoreAndSubscription(
62
58
const newSelectedState = latestSelector . current ( newReduxState )
63
59
64
60
if ( equalityFn ( newSelectedState , latestSelectedState . current ) ) {
65
- latestReduxState . current = newReduxState
66
- latestReduxStateIsValid . current = true
61
+ setReduxState ( prev => {
62
+ prev . value = newReduxState
63
+ return prev
64
+ } )
67
65
return
68
66
}
69
67
@@ -75,9 +73,7 @@ function useSelectorWithStoreAndSubscription(
75
73
// changed
76
74
latestSubscriptionCallbackError . current = err
77
75
}
78
- latestReduxStateIsValid . current = false
79
- latestReduxState . current = undefined
80
- forceRender ( newReduxState )
76
+ setReduxState ( ( ) => ( { value : newReduxState } ) )
81
77
}
82
78
83
79
subscription . onStateChange = checkForUpdates
0 commit comments