From e3736efb04dc06d7b1267ead982774d7c7de884f Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Wed, 23 Aug 2017 08:44:21 -0700 Subject: [PATCH] RN findNodeHandle no longer adds props directly to read-only owner --- src/renderers/native/findNodeHandle.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/renderers/native/findNodeHandle.js b/src/renderers/native/findNodeHandle.js index 816885d301cb7..75bb5ce6b16d6 100644 --- a/src/renderers/native/findNodeHandle.js +++ b/src/renderers/native/findNodeHandle.js @@ -23,7 +23,6 @@ if (__DEV__) { } import type {Fiber} from 'ReactFiber'; -import type {ReactInstance} from 'ReactInstanceType'; /** * ReactNative vs ReactWeb @@ -60,11 +59,10 @@ import type {ReactInstance} from 'ReactInstanceType'; // accidentally deep-requiring this version. function findNodeHandle(componentOrHandle: any): any { if (__DEV__) { - // TODO: fix this unsafe cast to work with Fiber. - var owner = ((ReactCurrentOwner.current: any): ReactInstance | null); - if (owner !== null) { + var owner = ReactCurrentOwner.current; + if (owner !== null && owner.stateNode !== null) { warning( - owner._warnedAboutRefsInRender, + owner.stateNode._warnedAboutRefsInRender, '%s is accessing findNodeHandle inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + @@ -73,7 +71,7 @@ function findNodeHandle(componentOrHandle: any): any { getComponentName(owner) || 'A component', ); - owner._warnedAboutRefsInRender = true; + owner.stateNode._warnedAboutRefsInRender = true; } } if (componentOrHandle == null) {