File tree 2 files changed +8
-2
lines changed
2 files changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -64,13 +64,15 @@ function useSelectorWithStoreAndSubscription(
64
64
useIsomorphicLayoutEffect ( ( ) => {
65
65
function checkForUpdates ( ) {
66
66
try {
67
- const newSelectedState = latestSelector . current ( store . getState ( ) )
67
+ const newStoreState = store . getState ( )
68
+ const newSelectedState = latestSelector . current ( newStoreState )
68
69
69
70
if ( equalityFn ( newSelectedState , latestSelectedState . current ) ) {
70
71
return
71
72
}
72
73
73
74
latestSelectedState . current = newSelectedState
75
+ latestStoreState . current = newStoreState
74
76
} catch ( err ) {
75
77
// we ignore all errors here, since when the component
76
78
// is re-rendered, the selectors are called again, and
Original file line number Diff line number Diff line change @@ -38,17 +38,21 @@ describe('React', () => {
38
38
} )
39
39
40
40
it ( 'selects the state and renders the component when the store updates' , ( ) => {
41
- const { result } = renderHook ( ( ) => useSelector ( ( s ) => s . count ) , {
41
+ const selector = jest . fn ( ( s ) => s . count )
42
+
43
+ const { result } = renderHook ( ( ) => useSelector ( selector ) , {
42
44
wrapper : ( props ) => < ProviderMock { ...props } store = { store } /> ,
43
45
} )
44
46
45
47
expect ( result . current ) . toEqual ( 0 )
48
+ expect ( selector ) . toHaveBeenCalledTimes ( 2 )
46
49
47
50
act ( ( ) => {
48
51
store . dispatch ( { type : '' } )
49
52
} )
50
53
51
54
expect ( result . current ) . toEqual ( 1 )
55
+ expect ( selector ) . toHaveBeenCalledTimes ( 3 )
52
56
} )
53
57
} )
54
58
You can’t perform that action at this time.
0 commit comments