mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
6dcdd2e2bc
Summary: I've noticed that in the Fabric Interop Layer sample on RN-Tester, when running with Old Arch, the legacy view is not receiving the commands correctly. This is due to us not sending the command as string, which is making the command fail to deliver. ## Changelog: [INTERNAL] - Fix old-arch component not updating background in interop layer example Pull Request resolved: https://github.com/facebook/react-native/pull/36924 Test Plan: Tested locally: | Before | After | |--------|--------| |  |  | Reviewed By: cipolleschi Differential Revision: D45043929 Pulled By: cortinico fbshipit-source-id: 8bb2a052a1a600046f3a16c868062c5e600385f0
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
/**
|
|
* 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 strict-local
|
|
* @format
|
|
*/
|
|
|
|
import * as React from 'react';
|
|
import type {HostComponent} from 'react-native';
|
|
import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes';
|
|
import {requireNativeComponent, UIManager} from 'react-native';
|
|
import ReactNative from '../../../react-native/Libraries/Renderer/shims/ReactNative';
|
|
|
|
type ColorChangedEvent = {
|
|
nativeEvent: {
|
|
backgroundColor: {
|
|
hue: number,
|
|
saturation: number,
|
|
brightness: number,
|
|
alpha: number,
|
|
},
|
|
},
|
|
};
|
|
|
|
type NativeProps = $ReadOnly<{|
|
|
...ViewProps,
|
|
opacity?: number,
|
|
color?: string,
|
|
onColorChanged?: (event: ColorChangedEvent) => void,
|
|
|}>;
|
|
|
|
export type MyLegacyViewType = HostComponent<NativeProps>;
|
|
|
|
export function callNativeMethodToChangeBackgroundColor(
|
|
viewRef: React.ElementRef<MyLegacyViewType> | null,
|
|
color: string,
|
|
) {
|
|
if (!viewRef) {
|
|
console.log('viewRef is null');
|
|
return;
|
|
}
|
|
UIManager.dispatchViewManagerCommand(
|
|
ReactNative.findNodeHandle(viewRef),
|
|
UIManager.getViewManagerConfig(
|
|
'RNTMyLegacyNativeView',
|
|
).Commands.changeBackgroundColor.toString(),
|
|
[color],
|
|
);
|
|
}
|
|
|
|
export default (requireNativeComponent(
|
|
'RNTMyLegacyNativeView',
|
|
): HostComponent<NativeProps>);
|