@samitouri / QOS-React-2 / commits / a186dc2e8d

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: