diff --git a/backend/attachRendererFiber.js b/backend/attachRendererFiber.js index a7e061b105..1029d22752 100644 --- a/backend/attachRendererFiber.js +++ b/backend/attachRendererFiber.js @@ -106,10 +106,10 @@ function getInternalReactConstants(version) { CONTEXT_PROVIDER_SYMBOL_STRING: 'Symbol(react.provider)', FORWARD_REF_NUMBER: 0xead0, FORWARD_REF_SYMBOL_STRING: 'Symbol(react.forward_ref)', + MEMO_NUMBER: 0xead3, + MEMO_SYMBOL_STRING: 'Symbol(react.memo)', PROFILER_NUMBER: 0xead2, PROFILER_SYMBOL_STRING: 'Symbol(react.profiler)', - PURE_NUMBER: 0xead3, - PURE_SYMBOL_STRING: 'Symbol(react.pure)', STRICT_MODE_NUMBER: 0xeacc, STRICT_MODE_SYMBOL_STRING: 'Symbol(react.strict_mode)', SUSPENSE_NUMBER: 0xead1, @@ -143,6 +143,8 @@ function attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): HostText, Fragment, ForwardRef, + MemoComponent, + SimpleMemoComponent, } = ReactTypeOfWork; var { CONCURRENT_MODE_NUMBER, @@ -154,8 +156,6 @@ function attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): CONTEXT_PROVIDER_SYMBOL_STRING, PROFILER_NUMBER, PROFILER_SYMBOL_STRING, - PURE_NUMBER, - PURE_SYMBOL_STRING, STRICT_MODE_NUMBER, STRICT_MODE_SYMBOL_STRING, SUSPENSE_NUMBER, @@ -166,6 +166,7 @@ function attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): // TODO: we might want to change the data structure // once we no longer suppport Stack versions of `getData`. function getDataFiber(fiber: Object): DataType { + var elementType = fiber.elementType; var type = fiber.type; var key = fiber.key; var ref = fiber.ref; @@ -279,6 +280,17 @@ function attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): nodeType = 'Wrapper'; children = []; break; + case MemoComponent: + case SimpleMemoComponent: + nodeType = 'Special'; + if (elementType.displayName) { + name = elementType.displayName; + } else { + const displayName = type.displayName || type.name; + name = displayName ? `Memo(${displayName})` : 'Memo'; + } + children = []; + break; default: const symbolOrNumber = typeof type === 'object' && type !== null ? type.$$typeof @@ -289,17 +301,6 @@ function attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): : symbolOrNumber; switch (switchValue) { - case PURE_NUMBER: - case PURE_SYMBOL_STRING: - nodeType = 'Special'; - if (type.displayName) { - name = type.displayName; - } else { - const displayName = type.render.displayName || type.render.name; - name = displayName ? `Pure(${displayName})` : 'Pure'; - } - children = []; - break; case CONCURRENT_MODE_NUMBER: case CONCURRENT_MODE_SYMBOL_STRING: case DEPRECATED_ASYNC_MODE_SYMBOL_STRING: