From f06d412a01def12de5eadfea3e2b9b489edad4da Mon Sep 17 00:00:00 2001 From: Anushree Subramani Date: Thu, 5 Oct 2017 19:32:34 +0530 Subject: [PATCH] Deduplication of warning messages in nested updates (#11081) --- src/renderers/shared/fiber/ReactFiberReconciler.js | 5 ++++- src/renderers/shared/fiber/ReactFiberScheduler.js | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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 ' +