From fac727f4e2b1226edcc6f95d719ed8770c75cc35 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 9 Apr 2024 14:57:03 -0400 Subject: [PATCH] Resolve cycle --- packages/react-dom/src/client/ReactDOMRootFB.js | 2 +- .../src/ReactNativePublicCompat.js | 2 +- .../src/ReactFiberAsyncDispatcher.js | 8 ++------ .../react-reconciler/src/ReactFiberBeginWork.js | 2 +- .../src/ReactFiberCurrentOwner.js | 16 ++++++++++++++++ .../src/ReactFiberTreeReflection.js | 2 +- .../react-reconciler/src/ReactFiberWorkLoop.js | 6 ++---- 7 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 packages/react-reconciler/src/ReactFiberCurrentOwner.js diff --git a/packages/react-dom/src/client/ReactDOMRootFB.js b/packages/react-dom/src/client/ReactDOMRootFB.js index 504073cb33bfb..94de29e92524b 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 {currentOwner} from 'react-reconciler/src/ReactFiberAsyncDispatcher'; +import {currentOwner} from 'react-reconciler/src/ReactFiberCurrentOwner'; import assign from 'shared/assign'; diff --git a/packages/react-native-renderer/src/ReactNativePublicCompat.js b/packages/react-native-renderer/src/ReactNativePublicCompat.js index a0c7e86085217..081ea6f7eb571 100644 --- a/packages/react-native-renderer/src/ReactNativePublicCompat.js +++ b/packages/react-native-renderer/src/ReactNativePublicCompat.js @@ -25,7 +25,7 @@ import { } from 'react-reconciler/src/ReactFiberReconciler'; import {doesFiberContain} from 'react-reconciler/src/ReactFiberTreeReflection'; import getComponentNameFromType from 'shared/getComponentNameFromType'; -import {currentOwner} from 'react-reconciler/src/ReactFiberAsyncDispatcher'; +import {currentOwner} from 'react-reconciler/src/ReactFiberCurrentOwner'; export function findHostInstance_DEPRECATED( componentOrHandle: ?(ElementRef | number), diff --git a/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js b/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js index 11b71213d8a99..f1c251965512c 100644 --- a/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js +++ b/packages/react-reconciler/src/ReactFiberAsyncDispatcher.js @@ -16,6 +16,8 @@ import {CacheContext} from './ReactFiberCacheComponent'; import {disableStringRefs} from 'shared/ReactFeatureFlags'; +import {currentOwner} from './ReactFiberCurrentOwner'; + function getCacheForType(resourceType: () => T): T { if (!enableCache) { throw new Error('Not implemented.'); @@ -29,8 +31,6 @@ function getCacheForType(resourceType: () => T): T { return cacheForType; } -export let currentOwner: Fiber | null = null; - export const DefaultAsyncDispatcher: AsyncDispatcher = ({ getCacheForType, }: any); @@ -40,7 +40,3 @@ if (__DEV__ || !disableStringRefs) { 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 a648bfb9d9198..b1d639583df7f 100644 --- a/packages/react-reconciler/src/ReactFiberBeginWork.js +++ b/packages/react-reconciler/src/ReactFiberBeginWork.js @@ -296,7 +296,7 @@ import { pushRootMarkerInstance, TransitionTracingMarker, } from './ReactFiberTracingMarkerComponent'; -import {setCurrentOwner} from './ReactFiberAsyncDispatcher'; +import {setCurrentOwner} from './ReactFiberCurrentOwner'; // A special exception that's used to unwind the stack when an update flows // into a dehydrated boundary. diff --git a/packages/react-reconciler/src/ReactFiberCurrentOwner.js b/packages/react-reconciler/src/ReactFiberCurrentOwner.js new file mode 100644 index 0000000000000..0c1f3d6e3130d --- /dev/null +++ b/packages/react-reconciler/src/ReactFiberCurrentOwner.js @@ -0,0 +1,16 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import type {Fiber} from './ReactInternalTypes'; + +export let currentOwner: Fiber | null = null; + +export function setCurrentOwner(fiber: null | Fiber) { + currentOwner = fiber; +} diff --git a/packages/react-reconciler/src/ReactFiberTreeReflection.js b/packages/react-reconciler/src/ReactFiberTreeReflection.js index 95916dcfff694..57640bd7f3b18 100644 --- a/packages/react-reconciler/src/ReactFiberTreeReflection.js +++ b/packages/react-reconciler/src/ReactFiberTreeReflection.js @@ -24,7 +24,7 @@ import { SuspenseComponent, } from './ReactWorkTags'; import {NoFlags, Placement, Hydrating} from './ReactFiberFlags'; -import {currentOwner} from './ReactFiberAsyncDispatcher'; +import {currentOwner} from './ReactFiberCurrentOwner'; export function getNearestMountedFiber(fiber: Fiber): null | Fiber { let node = fiber; diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js index 13e69a85813e0..00391bb354ee8 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js @@ -203,10 +203,8 @@ import { resetHooksOnUnwind, ContextOnlyDispatcher, } from './ReactFiberHooks'; -import { - DefaultAsyncDispatcher, - setCurrentOwner, -} from './ReactFiberAsyncDispatcher'; +import {DefaultAsyncDispatcher} from './ReactFiberAsyncDispatcher'; +import {setCurrentOwner} from './ReactFiberCurrentOwner'; import { createCapturedValueAtFiber, type CapturedValue,