Skip to content

Commit

Permalink
Don't call componentDidUpdate() in shallow renderer (#10372)
Browse files Browse the repository at this point in the history
* Don't call componentDidUpdate() in shallow renderer

* Lint

Sent from my iPhone haha

* Consistent comments
  • Loading branch information
gaearon authored Aug 3, 2017
1 parent a130757 commit 80577eb
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 22 deletions.
19 changes: 4 additions & 15 deletions src/renderers/testing/ReactShallowRendererEntry.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,17 +136,12 @@ class ReactShallowRenderer {
}

this._rendered = this._instance.render();

// Calling cDU might lead to problems with host component references.
// Since our components aren't really mounted, refs won't be available.
// if (typeof this._instance.componentDidMount === 'function') {
// this._instance.componentDidMount();
// }
// Intentionally do not call componentDidMount()
// because DOM refs are not available.
}

_updateClassComponent(props, context) {
const oldProps = this._instance.props;
const oldState = this._instance.state;

if (
oldProps !== props &&
Expand Down Expand Up @@ -180,14 +175,8 @@ class ReactShallowRenderer {
this._instance.state = state;

this._rendered = this._instance.render();

// The 15.x shallow renderer triggered cDU for setState() calls only.
if (
oldState !== state &&
typeof this._instance.componentDidUpdate === 'function'
) {
this._instance.componentDidUpdate(oldProps, oldState);
}
// Intentionally do not call componentDidUpdate()
// because DOM refs are not available.
}
}

Expand Down
9 changes: 2 additions & 7 deletions src/renderers/testing/__tests__/ReactShallowRenderer-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,7 @@ describe('ReactShallowRenderer', () => {
const instance = shallowRenderer.getMountedInstance();
instance.setState({});

// The previous shallow renderer triggered cDU for setState() calls.
expect(logs).toEqual([
'shouldComponentUpdate',
'componentWillUpdate',
'componentDidUpdate',
]);
expect(logs).toEqual(['shouldComponentUpdate', 'componentWillUpdate']);

logs.splice(0);

Expand Down Expand Up @@ -407,7 +402,7 @@ describe('ReactShallowRenderer', () => {
updatedState,
updatedContext,
]);
expect(componentDidUpdateParams).toEqual([initialProp, initialState]);
expect(componentDidUpdateParams).toEqual([]);
});

it('can shallowly render components with ref as function', () => {
Expand Down

0 comments on commit 80577eb

Please sign in to comment.