Skip to content

Commit 4149a21

Browse files
committed
[enzyme-adapter-react-16] [fix] properly render memoized SFCs
Fixes #2038
1 parent 487dc95 commit 4149a21

File tree

3 files changed

+21
-15
lines changed

3 files changed

+21
-15
lines changed

packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,21 @@ function toTree(vnode) {
177177
instance: node.stateNode,
178178
rendered: childrenToTree(node.child.child),
179179
};
180-
case FiberTags.MemoSFC:
180+
case FiberTags.MemoSFC: {
181+
let renderedNodes = flatten(nodeAndSiblingsArray(node.child).map(toTree));
182+
if (renderedNodes.length === 0) {
183+
renderedNodes = [node.memoizedProps.children];
184+
}
181185
return {
182186
nodeType: 'function',
183187
type: node.elementType.type,
184188
props: { ...node.memoizedProps },
185189
key: ensureKeyOrUndefined(node.key),
186190
ref: node.ref,
187191
instance: null,
188-
rendered: childrenToTree(node.child.child),
192+
rendered: renderedNodes,
189193
};
194+
}
190195
case FiberTags.HostComponent: {
191196
let renderedNodes = flatten(nodeAndSiblingsArray(node.child).map(toTree));
192197
if (renderedNodes.length === 0) {

packages/enzyme-test-suite/test/ReactWrapper-spec.jsx

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -601,18 +601,20 @@ describeWithDOM('mount', () => {
601601

602602
const wrapper = mount(<Foo foo="qux" />);
603603
expect(wrapper.debug()).to.equal(`<InnerFoo foo="qux">
604-
<InnerComp>
605-
<div>
606-
<span>
607-
Hello
608-
</span>
604+
<div>
605+
<InnerComp>
606+
<div>
607+
<span>
608+
Hello
609+
</span>
610+
</div>
611+
</InnerComp>
612+
<div className="bar">
613+
bar
614+
</div>
615+
<div className="qoo">
616+
qux
609617
</div>
610-
</InnerComp>
611-
<div className="bar">
612-
bar
613-
</div>
614-
<div className="qoo">
615-
qux
616618
</div>
617619
</InnerFoo>`);
618620
expect(wrapper.find('InnerComp')).to.have.lengthOf(1);

packages/enzyme-test-suite/test/shared/methods/find.jsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -857,8 +857,7 @@ export default function describeFind({
857857
});
858858

859859
describeIf(is('>= 16.6'), 'React.memo', () => {
860-
// FIXME: fix bug for mount
861-
itIf(!isMount, 'works with an SFC', () => {
860+
it('works with an SFC', () => {
862861
const InnerComp = () => <div><span>Hello</span></div>;
863862
const InnerFoo = ({ foo }) => (
864863
<div>

0 commit comments

Comments
 (0)