Filter out dehydrated Suspense nodes
Dan Abramov committed
Apr 20, 2019 at 13:46 UTC
a186dc2e8d11e13e6c32009305ec0501b740a829
1 file changed
+11
src/backend/renderer.js
+11
@@ -89,6 +89,7 @@ function getInternalReactConstants(version) {
89
ContextProvider: 10,
90
CoroutineComponent: -1, // Removed
91
CoroutineHandlerPhase: -1, // Removed
92
+ DehydratedSuspenseComponent: 18, // Behind a flag
93
EventComponent: 19, // Added in 16.9
94
EventTarget: 20, // Added in 16.9
95
ForwardRef: 11,
@@ -115,6 +116,7 @@ function getInternalReactConstants(version) {
116
ContextProvider: 12,
117
CoroutineComponent: -1, // Removed
118
CoroutineHandlerPhase: -1, // Removed
119
+ DehydratedSuspenseComponent: -1, // Doesn't exist yet
120
EventComponent: -1, // Doesn't exist yet
121
EventTarget: -1, // Doesn't exist yet
122
ForwardRef: 13,
@@ -141,6 +143,7 @@ function getInternalReactConstants(version) {
143
ContextProvider: 13,
144
CoroutineComponent: 7,
145
CoroutineHandlerPhase: 8,
146
+ DehydratedSuspenseComponent: -1, // Doesn't exist yet
147
EventComponent: -1, // Doesn't exist yet
148
EventTarget: -1, // Doesn't exist yet
149
ForwardRef: 14,
@@ -188,6 +191,7 @@ export function attach(
191
FunctionComponent,
192
ClassComponent,
193
ContextConsumer,
194
+ DehydratedSuspenseComponent,
195
EventComponent,
196
EventTarget,
197
Fragment,
@@ -267,6 +271,13 @@ export function attach(
271
case MemoComponent:
272
case SimpleMemoComponent:
273
return false;
274
+ case DehydratedSuspenseComponent:
275
+ // TODO: ideally we would show dehydrated Suspense immediately.
276
+ // However, it has some special behavior (like disconnecting
277
+ // an alternate and turning into real Suspense) which breaks DevTools.
278
+ // For now, ignore it, and only show it once it gets hydrated.
279
+ // https://github.com/bvaughn/react-devtools-experimental/issues/197
280
+ return true;
281
case EventComponent:
282
case HostPortal:
283
case HostComponent: