From eb0216d8be0e6158b2e1baafc14f0b1263e022fb Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 30 Aug 2019 18:08:28 -0700 Subject: [PATCH] Partial RN sync Summary: This cherry-picks one commit: https://github.com/facebook/react/commit/01fb68b9bf680ab8bbf96e86501e0fc540b3cc97 It fixes a bug in Fast Refresh. Reviewed By: threepointone Differential Revision: D17140543 fbshipit-source-id: a7654152d1cc7c27e7c4024380349b44ac496b22 --- Libraries/Renderer/implementations/ReactFabric-dev.fb.js | 5 +++++ Libraries/Renderer/implementations/ReactFabric-dev.js | 5 +++++ .../Renderer/implementations/ReactNativeRenderer-dev.fb.js | 5 +++++ .../Renderer/implementations/ReactNativeRenderer-dev.js | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/Libraries/Renderer/implementations/ReactFabric-dev.fb.js b/Libraries/Renderer/implementations/ReactFabric-dev.fb.js index 68b992fd50d..45ceec34b6a 100644 --- a/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +++ b/Libraries/Renderer/implementations/ReactFabric-dev.fb.js @@ -11122,6 +11122,11 @@ function renderWithHooks( do { didScheduleRenderPhaseUpdate = false; numberOfReRenders += 1; + { + // Even when hot reloading, allow dependencies to stabilize + // after first render to prevent infinite render phase updates. + ignorePreviousDependencies = false; + } // Start over from the beginning of the list nextCurrentHook = current !== null ? current.memoizedState : null; diff --git a/Libraries/Renderer/implementations/ReactFabric-dev.js b/Libraries/Renderer/implementations/ReactFabric-dev.js index ad2a1b865b9..2b189740eeb 100644 --- a/Libraries/Renderer/implementations/ReactFabric-dev.js +++ b/Libraries/Renderer/implementations/ReactFabric-dev.js @@ -11118,6 +11118,11 @@ function renderWithHooks( do { didScheduleRenderPhaseUpdate = false; numberOfReRenders += 1; + { + // Even when hot reloading, allow dependencies to stabilize + // after first render to prevent infinite render phase updates. + ignorePreviousDependencies = false; + } // Start over from the beginning of the list nextCurrentHook = current !== null ? current.memoizedState : null; diff --git a/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js b/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js index 4d155951884..a9f3f89e72f 100644 --- a/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +++ b/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js @@ -10699,6 +10699,11 @@ function renderWithHooks( do { didScheduleRenderPhaseUpdate = false; numberOfReRenders += 1; + { + // Even when hot reloading, allow dependencies to stabilize + // after first render to prevent infinite render phase updates. + ignorePreviousDependencies = false; + } // Start over from the beginning of the list nextCurrentHook = current !== null ? current.memoizedState : null; diff --git a/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js b/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js index b38efdcb4ed..c21f80dc4e5 100644 --- a/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +++ b/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js @@ -10695,6 +10695,11 @@ function renderWithHooks( do { didScheduleRenderPhaseUpdate = false; numberOfReRenders += 1; + { + // Even when hot reloading, allow dependencies to stabilize + // after first render to prevent infinite render phase updates. + ignorePreviousDependencies = false; + } // Start over from the beginning of the list nextCurrentHook = current !== null ? current.memoizedState : null;