From 80577eb64928c59faf04f4d51593300a2e24e89c Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Thu, 3 Aug 2017 22:49:29 +0100 Subject: [PATCH] Don't call componentDidUpdate() in shallow renderer (#10372) * Don't call componentDidUpdate() in shallow renderer * Lint Sent from my iPhone haha * Consistent comments --- .../testing/ReactShallowRendererEntry.js | 19 ++++--------------- .../__tests__/ReactShallowRenderer-test.js | 9 ++------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/renderers/testing/ReactShallowRendererEntry.js b/src/renderers/testing/ReactShallowRendererEntry.js index 773b39dc0c9ac..0a1763d40e5d2 100644 --- a/src/renderers/testing/ReactShallowRendererEntry.js +++ b/src/renderers/testing/ReactShallowRendererEntry.js @@ -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 && @@ -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. } } diff --git a/src/renderers/testing/__tests__/ReactShallowRenderer-test.js b/src/renderers/testing/__tests__/ReactShallowRenderer-test.js index 9b6799ebcbcb4..3cae277b8fede 100644 --- a/src/renderers/testing/__tests__/ReactShallowRenderer-test.js +++ b/src/renderers/testing/__tests__/ReactShallowRenderer-test.js @@ -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); @@ -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', () => {