@@ -8,7 +8,11 @@ import {
8
8
isMemoType ,
9
9
isForwardType ,
10
10
} from './internal/reactUtils'
11
- import { increment as incrementGeneration } from './global/generation'
11
+ import {
12
+ increment as incrementGeneration ,
13
+ hotComparisonOpen ,
14
+ enterHotUpdate ,
15
+ } from './global/generation'
12
16
import {
13
17
updateProxyById ,
14
18
resetProxies ,
@@ -41,6 +45,8 @@ const updateLazy = (target, type) => {
41
45
target [ lazyConstructor ] = ( ) =>
42
46
ctor ( ) . then ( m => {
43
47
const C = resolveType ( m . default )
48
+ // chunks has been updated - new hot loader process is taking a place
49
+ enterHotUpdate ( )
44
50
return {
45
51
default : props => (
46
52
< AppContainer >
@@ -64,40 +70,42 @@ export const hotComponentCompare = (oldType, newType, setNewType) => {
64
70
return true
65
71
}
66
72
67
- if (
68
- ( isRegisteredComponent ( oldType ) || isRegisteredComponent ( newType ) ) &&
69
- resolveType ( oldType ) !== resolveType ( newType )
70
- ) {
71
- return false
72
- }
73
+ if ( hotComparisonOpen ( ) ) {
74
+ if (
75
+ ( isRegisteredComponent ( oldType ) || isRegisteredComponent ( newType ) ) &&
76
+ resolveType ( oldType ) !== resolveType ( newType )
77
+ ) {
78
+ return false
79
+ }
73
80
74
- if ( isForwardType ( { type : oldType } ) && isForwardType ( { type : newType } ) ) {
75
- if ( areSwappable ( oldType . render , newType . render ) ) {
76
- setNewType ( newType )
77
- return true
81
+ if ( isForwardType ( { type : oldType } ) && isForwardType ( { type : newType } ) ) {
82
+ if ( areSwappable ( oldType . render , newType . render ) ) {
83
+ setNewType ( newType )
84
+ return true
85
+ }
86
+ return false
78
87
}
79
- return false
80
- }
81
88
82
- if ( isMemoType ( { type : oldType } ) && isMemoType ( { type : newType } ) ) {
83
- if ( areSwappable ( oldType . type , newType . type ) ) {
84
- setNewType ( newType . type )
85
- return true
89
+ if ( isMemoType ( { type : oldType } ) && isMemoType ( { type : newType } ) ) {
90
+ if ( areSwappable ( oldType . type , newType . type ) ) {
91
+ setNewType ( newType . type )
92
+ return true
93
+ }
94
+ return false
86
95
}
87
- return false
88
- }
89
96
90
- if ( areSwappable ( newType , oldType ) ) {
91
- const unwrapFactory = newType [ UNWRAP_PROXY ]
92
- const oldProxy = unwrapFactory && getProxyByType ( unwrapFactory ( ) )
93
- if ( oldProxy ) {
94
- oldProxy . dereference ( )
95
- updateProxyById ( oldType [ PROXY_KEY ] , newType [ UNWRAP_PROXY ] ( ) )
96
- updateProxyById ( newType [ PROXY_KEY ] , oldType [ UNWRAP_PROXY ] ( ) )
97
- } else {
98
- setNewType ( newType )
97
+ if ( areSwappable ( newType , oldType ) ) {
98
+ const unwrapFactory = newType [ UNWRAP_PROXY ]
99
+ const oldProxy = unwrapFactory && getProxyByType ( unwrapFactory ( ) )
100
+ if ( oldProxy ) {
101
+ oldProxy . dereference ( )
102
+ updateProxyById ( oldType [ PROXY_KEY ] , newType [ UNWRAP_PROXY ] ( ) )
103
+ updateProxyById ( newType [ PROXY_KEY ] , oldType [ UNWRAP_PROXY ] ( ) )
104
+ } else {
105
+ setNewType ( newType )
106
+ }
107
+ return true
99
108
}
100
- return true
101
109
}
102
110
103
111
return false
0 commit comments