diff --git a/src/renderers/shared/fiber/ReactFiberReconciler.js b/src/renderers/shared/fiber/ReactFiberReconciler.js index eafa87add0c78..aeed6ac9b69e9 100644 --- a/src/renderers/shared/fiber/ReactFiberReconciler.js +++ b/src/renderers/shared/fiber/ReactFiberReconciler.js @@ -34,6 +34,7 @@ if (__DEV__) { var ReactFiberInstrumentation = require('ReactFiberInstrumentation'); var ReactDebugCurrentFiber = require('ReactDebugCurrentFiber'); var getComponentName = require('getComponentName'); + var didWarnAboutNestedUpdates = false; } var { @@ -214,8 +215,10 @@ module.exports = function( if (__DEV__) { if ( ReactDebugCurrentFiber.phase === 'render' && - ReactDebugCurrentFiber.current !== null + ReactDebugCurrentFiber.current !== null && + !didWarnAboutNestedUpdates ) { + didWarnAboutNestedUpdates = true; warning( false, 'Render methods should be a pure function of props and state; ' + diff --git a/src/renderers/shared/fiber/ReactFiberScheduler.js b/src/renderers/shared/fiber/ReactFiberScheduler.js index 495bb550de265..cc3800d129ea7 100644 --- a/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -109,6 +109,8 @@ if (__DEV__) { stopCommitLifeCyclesTimer, } = require('ReactDebugFiberPerf'); + var didWarnAboutStateTransition = false; + var warnAboutUpdateOnUnmounted = function( instance: React$ComponentType, ) { @@ -132,6 +134,10 @@ if (__DEV__) { ); break; case 'render': + if (didWarnAboutStateTransition) { + return; + } + didWarnAboutStateTransition = true; warning( false, 'Cannot update during an existing state transition (such as within ' +