From 34a3274b6d83b660912deb5ae12f6bd7eb0d7214 Mon Sep 17 00:00:00 2001 From: Eli White Date: Thu, 27 Feb 2020 19:36:13 -0800 Subject: [PATCH] Partial React Sync from 241c4467e...00d8e5b80 Summary: - **[00d8e5b80](https://github.com/facebook/react/commit/00d8e5b80 )**: [Fabric] Fix targetAsInstance dispatchEvent "cannot read property of null" (#18156) //// - **[ad84625f8](https://github.com/facebook/react/commit/ad84625f8 )**: [Native] Migrate focus/blur to call TextInputState with the host component (#18068) //// - **[edab5c074](https://github.com/facebook/react/commit/edab5c074 )**: Re-throw errors thrown by the renderer at the root in the complete phase (#18029) //// - **[a6dfe9aa4](https://github.com/facebook/react/commit/a6dfe9aa4 )**: [Native] Delete NativeComponent and NativeMethodsMixin (#18036) //// Changelog: [General][React] Partial React Sync from 241c4467e...00d8e5b80 Reviewed By: JoshuaGross Differential Revision: D20153744 fbshipit-source-id: 09c5fec620370f1844a89af1c6ba2d487020216d --- Libraries/Renderer/implementations/ReactFabric-dev.fb.js | 6 +++++- Libraries/Renderer/implementations/ReactFabric-dev.js | 6 +++++- .../Renderer/implementations/ReactFabric-prod.fb.js | 9 ++++++--- .../Renderer/implementations/ReactFabric-profiling.fb.js | 9 ++++++--- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Libraries/Renderer/implementations/ReactFabric-dev.fb.js b/Libraries/Renderer/implementations/ReactFabric-dev.fb.js index 23f1d76c068131..2414df073f94fa 100644 --- a/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +++ b/Libraries/Renderer/implementations/ReactFabric-dev.fb.js @@ -3828,7 +3828,11 @@ function dispatchEvent(target, topLevelType, nativeEvent) { if (enableNativeTargetAsInstance) { if (targetFiber != null) { - eventTarget = targetFiber.stateNode.canonical; + var stateNode = targetFiber.stateNode; // Guard against Fiber being unmounted + + if (stateNode != null) { + eventTarget = stateNode.canonical; + } } } else { eventTarget = nativeEvent.target; diff --git a/Libraries/Renderer/implementations/ReactFabric-dev.js b/Libraries/Renderer/implementations/ReactFabric-dev.js index 91e18999b9e7b8..3c08d6152b9eba 100644 --- a/Libraries/Renderer/implementations/ReactFabric-dev.js +++ b/Libraries/Renderer/implementations/ReactFabric-dev.js @@ -3826,7 +3826,11 @@ function dispatchEvent(target, topLevelType, nativeEvent) { if (enableNativeTargetAsInstance) { if (targetFiber != null) { - eventTarget = targetFiber.stateNode.canonical; + var stateNode = targetFiber.stateNode; // Guard against Fiber being unmounted + + if (stateNode != null) { + eventTarget = stateNode.canonical; + } } } else { eventTarget = nativeEvent.target; diff --git a/Libraries/Renderer/implementations/ReactFabric-prod.fb.js b/Libraries/Renderer/implementations/ReactFabric-prod.fb.js index 40fe137482624c..4d84a8cc658233 100644 --- a/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +++ b/Libraries/Renderer/implementations/ReactFabric-prod.fb.js @@ -1467,9 +1467,12 @@ function batchedUpdates(fn, bookkeeping) { } function dispatchEvent(target, topLevelType, nativeEvent) { var eventTarget = null; - enableNativeTargetAsInstance - ? null != target && (eventTarget = target.stateNode.canonical) - : (eventTarget = nativeEvent.target); + if (enableNativeTargetAsInstance) { + if (null != target) { + var stateNode = target.stateNode; + null != stateNode && (eventTarget = stateNode.canonical); + } + } else eventTarget = nativeEvent.target; batchedUpdates(function() { var events = eventTarget; for (var events$jscomp$0 = null, i = 0; i < plugins.length; i++) { diff --git a/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js b/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js index 804b26e06cd2f8..5cbd41b7417129 100644 --- a/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +++ b/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js @@ -1468,9 +1468,12 @@ function batchedUpdates(fn, bookkeeping) { } function dispatchEvent(target, topLevelType, nativeEvent) { var eventTarget = null; - enableNativeTargetAsInstance - ? null != target && (eventTarget = target.stateNode.canonical) - : (eventTarget = nativeEvent.target); + if (enableNativeTargetAsInstance) { + if (null != target) { + var stateNode = target.stateNode; + null != stateNode && (eventTarget = stateNode.canonical); + } + } else eventTarget = nativeEvent.target; batchedUpdates(function() { var events = eventTarget; for (var events$jscomp$0 = null, i = 0; i < plugins.length; i++) {