diff --git a/src/renderers/dom/client/ReactMount.js b/src/renderers/dom/client/ReactMount.js index 4f45156704e0c..5e1827b746519 100644 --- a/src/renderers/dom/client/ReactMount.js +++ b/src/renderers/dom/client/ReactMount.js @@ -169,7 +169,13 @@ function batchedMountComponentIntoNode( * @see {ReactMount.unmountComponentAtNode} */ function unmountComponentFromNode(instance, container, safely) { + if (__DEV__) { + ReactInstrumentation.debugTool.onBeginFlush(); + } ReactReconciler.unmountComponent(instance, safely); + if (__DEV__) { + ReactInstrumentation.debugTool.onEndFlush(); + } if (container.nodeType === DOC_NODE_TYPE) { container = container.documentElement; diff --git a/src/renderers/shared/__tests__/ReactPerf-test.js b/src/renderers/shared/__tests__/ReactPerf-test.js index 0a24bb9919d7f..083b5f64f344c 100644 --- a/src/renderers/shared/__tests__/ReactPerf-test.js +++ b/src/renderers/shared/__tests__/ReactPerf-test.js @@ -16,10 +16,12 @@ describe('ReactPerf', function() { var ReactDOM; var ReactPerf; var ReactTestUtils; + var emptyFunction; var App; var Box; var Div; + var LifeCycle; beforeEach(function() { var now = 0; @@ -36,6 +38,7 @@ describe('ReactPerf', function() { ReactDOM = require('ReactDOM'); ReactPerf = require('ReactPerf'); ReactTestUtils = require('ReactTestUtils'); + emptyFunction = require('emptyFunction'); App = React.createClass({ render: function() { @@ -55,6 +58,17 @@ describe('ReactPerf', function() { return
; }, }); + + LifeCycle = React.createClass({ + shouldComponentUpdate: emptyFunction.thatReturnsTrue, + componentWillMount: emptyFunction, + componentDidMount: emptyFunction, + componentWillReceiveProps: emptyFunction, + componentWillUpdate: emptyFunction, + componentDidUpdate: emptyFunction, + componentWillUnmount: emptyFunction, + render: emptyFunction.thatReturnsNull, + }); }); afterEach(function() { @@ -215,7 +229,7 @@ describe('ReactPerf', function() { }); }); - it('should not count replacing null with a native as waste', function() { + it('should not count replacing null with a host as waste', function() { var element = null; function Foo() { return element; @@ -228,7 +242,7 @@ describe('ReactPerf', function() { }); }); - it('should not count replacing a native with null as waste', function() { + it('should not count replacing a host with null as waste', function() { var element = ; function Foo() { return element; @@ -256,6 +270,65 @@ describe('ReactPerf', function() { }]); }); + it('should include lifecycle methods in measurements', function() { + var container = document.createElement('div'); + var measurements = measure(() => { + var instance = ReactDOM.render(