Enable native view configs in bridgeless mode in OSS (#39476)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39476 This diff enables native view config interop layer in bridgeless mode by default for OSS. It also removes redundant `enableNativeViewConfigsInBridgelessMode` JS feature flag. Changelog: [General][Added] - Native view config interop layer enabled in bridgeless mode. Reviewed By: luluwu2032 Differential Revision: D49318325 fbshipit-source-id: ea2e38b2ea10637b578d98e38d97eed923498fb3
This commit is contained in:
Родитель
3eb8e4d482
Коммит
4fbe05577b
|
@ -87,6 +87,8 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
|
|||
|
||||
if (enableBridgeless) {
|
||||
#if RCT_NEW_ARCH_ENABLED
|
||||
// Enable native view config interop only if both bridgeless mode and Fabric is enabled.
|
||||
RCTSetUseNativeViewConfigsInBridgelessMode([self fabricEnabled]);
|
||||
[self createReactHost];
|
||||
[self unstable_registerLegacyComponents];
|
||||
[RCTComponentViewFactory currentComponentViewFactory].thirdPartyFabricComponentsProvider = self;
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
import type {RootTag} from '../Types/RootTagTypes';
|
||||
|
||||
import {unstable_hasComponent} from '../NativeComponent/NativeComponentRegistryUnstable';
|
||||
import ReactNativeFeatureFlags from './ReactNativeFeatureFlags';
|
||||
|
||||
let cachedConstants = null;
|
||||
|
||||
|
@ -22,6 +21,10 @@ const errorMessageForMethod = (methodName: string): string =>
|
|||
methodName +
|
||||
"' is not available in the new React Native architecture.";
|
||||
|
||||
function nativeViewConfigsInBridgelessModeEnabled(): boolean {
|
||||
return global.RN$LegacyInterop_UIManager_getConstants !== undefined;
|
||||
}
|
||||
|
||||
function getCachedConstants(): Object {
|
||||
if (!cachedConstants) {
|
||||
cachedConstants = global.RN$LegacyInterop_UIManager_getConstants();
|
||||
|
@ -31,7 +34,7 @@ function getCachedConstants(): Object {
|
|||
|
||||
const UIManagerJS: {[string]: $FlowFixMe} = {
|
||||
getViewManagerConfig: (viewManagerName: string): mixed => {
|
||||
if (ReactNativeFeatureFlags.enableNativeViewConfigsInBridgelessMode()) {
|
||||
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
||||
return getCachedConstants()[viewManagerName];
|
||||
} else {
|
||||
console.error(
|
||||
|
@ -46,7 +49,7 @@ const UIManagerJS: {[string]: $FlowFixMe} = {
|
|||
return unstable_hasComponent(viewManagerName);
|
||||
},
|
||||
getConstants: (): Object => {
|
||||
if (ReactNativeFeatureFlags.enableNativeViewConfigsInBridgelessMode()) {
|
||||
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
||||
return getCachedConstants();
|
||||
} else {
|
||||
console.error(errorMessageForMethod('getConstants'));
|
||||
|
@ -179,7 +182,7 @@ const UIManagerJS: {[string]: $FlowFixMe} = {
|
|||
console.error(errorMessageForMethod('dismissPopupMenu')),
|
||||
};
|
||||
|
||||
if (ReactNativeFeatureFlags.enableNativeViewConfigsInBridgelessMode()) {
|
||||
if (nativeViewConfigsInBridgelessModeEnabled()) {
|
||||
Object.keys(getCachedConstants()).forEach(viewConfigName => {
|
||||
UIManagerJS[viewConfigName] = getCachedConstants()[viewConfigName];
|
||||
});
|
||||
|
|
|
@ -54,10 +54,6 @@ export type FeatureFlags = {|
|
|||
* Enables use of setNativeProps in JS driven animations.
|
||||
*/
|
||||
shouldUseSetNativePropsInFabric: () => boolean,
|
||||
/**
|
||||
* Enables native view configs in brdgeless mode.
|
||||
*/
|
||||
enableNativeViewConfigsInBridgelessMode: () => boolean,
|
||||
/**
|
||||
* Enables a hotfix for forcing materialization of views with elevation set.
|
||||
*/
|
||||
|
@ -74,7 +70,6 @@ const ReactNativeFeatureFlags: FeatureFlags = {
|
|||
enableAccessToHostTreeInFabric: () => false,
|
||||
shouldUseAnimatedObjectForTransform: () => false,
|
||||
shouldUseSetNativePropsInFabric: () => false,
|
||||
enableNativeViewConfigsInBridgelessMode: () => false,
|
||||
shouldForceUnflattenForElevation: () => false,
|
||||
};
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ object DefaultNewArchitectureEntryPoint {
|
|||
ReactFeatureFlags.enableFabricRenderer = fabricEnabled
|
||||
ReactFeatureFlags.unstable_useFabricInterop = fabricEnabled
|
||||
ReactFeatureFlags.enableBridgelessArchitecture = bridgelessEnabled
|
||||
ReactFeatureFlags.useNativeViewConfigsInBridgelessMode = fabricEnabled && bridgelessEnabled
|
||||
|
||||
this.privateFabricEnabled = fabricEnabled
|
||||
this.privateTurboModulesEnabled = turboModulesEnabled
|
||||
|
|
Загрузка…
Ссылка в новой задаче