diff --git a/packages/react-dom/src/client/ReactDOMRootFB.js b/packages/react-dom/src/client/ReactDOMRootFB.js index 38fe67c0a5..504073cb33 100644 --- a/packages/react-dom/src/client/ReactDOMRootFB.js +++ b/packages/react-dom/src/client/ReactDOMRootFB.js @@ -61,7 +61,7 @@ import {LegacyRoot} from 'react-reconciler/src/ReactRootTags'; import getComponentNameFromType from 'shared/getComponentNameFromType'; import {has as hasInstance} from 'shared/ReactInstanceMap'; -import ReactSharedInternals from 'shared/ReactSharedInternals'; +import {currentOwner} from 'react-reconciler/src/ReactFiberAsyncDispatcher'; import assign from 'shared/assign'; @@ -342,7 +342,7 @@ export function findDOMNode( componentOrElement: Element | ?React$Component, ): null | Element | Text { if (__DEV__) { - const owner = (ReactSharedInternals.owner: any); + const owner = currentOwner; if (owner !== null && owner.stateNode !== null) { const warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender; if (!warnedAboutRefsInRender) { diff --git a/packages/react-native-renderer/src/ReactNativePublicCompat.js b/packages/react-native-renderer/src/ReactNativePublicCompat.js index 93b85e172d..a0c7e86085 100644 --- a/packages/react-native-renderer/src/ReactNativePublicCompat.js +++ b/packages/react-native-renderer/src/ReactNativePublicCompat.js @@ -24,14 +24,14 @@ import { findHostInstanceWithWarning, } from 'react-reconciler/src/ReactFiberReconciler'; import {doesFiberContain} from 'react-reconciler/src/ReactFiberTreeReflection'; -import ReactSharedInternals from 'shared/ReactSharedInternals'; import getComponentNameFromType from 'shared/getComponentNameFromType'; +import {currentOwner} from 'react-reconciler/src/ReactFiberAsyncDispatcher'; export function findHostInstance_DEPRECATED( componentOrHandle: ?(ElementRef | number), ): ?ElementRef> { if (__DEV__) { - const owner = ReactSharedInternals.owner; + const owner = currentOwner; if (owner !== null && owner.stateNode !== null) { if (!owner.stateNode._warnedAboutRefsInRender) { console.error( @@ -86,7 +86,7 @@ export function findHostInstance_DEPRECATED( export function findNodeHandle(componentOrHandle: any): ?number { if (__DEV__) { - const owner = ReactSharedInternals.owner; + const owner = currentOwner; if (owner !== null && owner.stateNode !== null) { if (!owner.stateNode._warnedAboutRefsInRender) { console.error( diff --git a/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js b/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js index 379425fc22..11b71213d8 100644 --- a/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js +++ b/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js @@ -29,13 +29,18 @@ function getCacheForType(resourceType: () => T): T { return cacheForType; } +export let currentOwner: Fiber | null = null; + export const DefaultAsyncDispatcher: AsyncDispatcher = ({ getCacheForType, }: any); if (__DEV__ || !disableStringRefs) { DefaultAsyncDispatcher.getOwner = (): null | Fiber => { - // TODO - return null; + return currentOwner; }; } + +export function setCurrentOwner(fiber: null | Fiber) { + currentOwner = fiber; +} diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.js b/packages/react-reconciler/src/ReactFiberBeginWork.js index 034c853976..a648bfb9d9 100644 --- a/packages/react-reconciler/src/ReactFiberBeginWork.js +++ b/packages/react-reconciler/src/ReactFiberBeginWork.js @@ -91,7 +91,6 @@ import { Passive, DidDefer, } from './ReactFiberFlags'; -import ReactSharedInternals from 'shared/ReactSharedInternals'; import { debugRenderPhaseSideEffectsForStrictMode, disableLegacyContext, @@ -297,6 +296,7 @@ import { pushRootMarkerInstance, TransitionTracingMarker, } from './ReactFiberTracingMarkerComponent'; +import {setCurrentOwner} from './ReactFiberAsyncDispatcher'; // A special exception that's used to unwind the stack when an update flows // into a dehydrated boundary. @@ -432,7 +432,7 @@ function updateForwardRef( markComponentRenderStarted(workInProgress); } if (__DEV__) { - ReactSharedInternals.owner = workInProgress; + setCurrentOwner(workInProgress); setIsRendering(true); nextChildren = renderWithHooks( current, @@ -1150,7 +1150,7 @@ function updateFunctionComponent( markComponentRenderStarted(workInProgress); } if (__DEV__) { - ReactSharedInternals.owner = workInProgress; + setCurrentOwner(workInProgress); setIsRendering(true); nextChildren = renderWithHooks( current, @@ -1373,7 +1373,7 @@ function finishClassComponent( // Rerender if (__DEV__ || !disableStringRefs) { - ReactSharedInternals.owner = workInProgress; + setCurrentOwner(workInProgress); } let nextChildren; if ( @@ -3419,7 +3419,7 @@ function updateContextConsumer( } let newChildren; if (__DEV__) { - ReactSharedInternals.owner = workInProgress; + setCurrentOwner(workInProgress); setIsRendering(true); newChildren = render(newValue); setIsRendering(false); diff --git a/packages/react-reconciler/src/ReactFiberTreeReflection.js b/packages/react-reconciler/src/ReactFiberTreeReflection.js index 64cc35d2c0..95916dcfff 100644 --- a/packages/react-reconciler/src/ReactFiberTreeReflection.js +++ b/packages/react-reconciler/src/ReactFiberTreeReflection.js @@ -12,7 +12,6 @@ import type {Container, SuspenseInstance} from './ReactFiberConfig'; import type {SuspenseState} from './ReactFiberSuspenseComponent'; import {get as getInstance} from 'shared/ReactInstanceMap'; -import ReactSharedInternals from 'shared/ReactSharedInternals'; import getComponentNameFromFiber from 'react-reconciler/src/getComponentNameFromFiber'; import { ClassComponent, @@ -25,6 +24,7 @@ import { SuspenseComponent, } from './ReactWorkTags'; import {NoFlags, Placement, Hydrating} from './ReactFiberFlags'; +import {currentOwner} from './ReactFiberAsyncDispatcher'; export function getNearestMountedFiber(fiber: Fiber): null | Fiber { let node = fiber; @@ -89,7 +89,7 @@ export function isFiberMounted(fiber: Fiber): boolean { export function isMounted(component: React$Component): boolean { if (__DEV__) { - const owner = (ReactSharedInternals.owner: any); + const owner = currentOwner; if (owner !== null && owner.tag === ClassComponent) { const ownerFiber: Fiber = owner; const instance = ownerFiber.stateNode; diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js index 3c802c2564..13e69a8581 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js @@ -203,7 +203,10 @@ import { resetHooksOnUnwind, ContextOnlyDispatcher, } from './ReactFiberHooks'; -import {DefaultAsyncDispatcher} from './ReactFiberAsyncDispatcher'; +import { + DefaultAsyncDispatcher, + setCurrentOwner, +} from './ReactFiberAsyncDispatcher'; import { createCapturedValueAtFiber, type CapturedValue, @@ -1684,7 +1687,7 @@ function handleThrow(root: FiberRoot, thrownValue: any): void { resetHooksAfterThrow(); resetCurrentDebugFiberInDEV(); if (__DEV__ || !disableStringRefs) { - ReactSharedInternals.owner = null; + setCurrentOwner(null); } if (thrownValue === SuspenseException) { @@ -2386,7 +2389,7 @@ function performUnitOfWork(unitOfWork: Fiber): void { } if (__DEV__ || !disableStringRefs) { - ReactSharedInternals.owner = null; + setCurrentOwner(null); } } @@ -2501,7 +2504,7 @@ function replaySuspendedUnitOfWork(unitOfWork: Fiber): void { } if (__DEV__ || !disableStringRefs) { - ReactSharedInternals.owner = null; + setCurrentOwner(null); } } @@ -2894,7 +2897,7 @@ function commitRootImpl( // Reset this to null before calling lifecycles if (__DEV__ || !disableStringRefs) { - ReactSharedInternals.owner = null; + setCurrentOwner(null); } // The commit phase is broken into several sub-phases. We do a separate pass