This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
RNHostView
一个支持在 Jetpack Compose 中使用 React Native 视图的组件
一种用于在 Jetpack Compose 组件中渲染 React Native 视图时实现正确布局行为的组件。它通过更新 shadow node 的尺寸,将布局信息从 Jetpack Compose 同步回 React Native 的 Yoga 布局系统。
当 React Native 视图被放置在 ModalBottomSheet、Card、Row、Column 等 Jetpack Compose 组件中时,布局系统需要相互通信。RNHostView 弥合了这一差距:
- 使用
matchContents:shadow node 的尺寸会设置为与子 React Native 视图的固有尺寸匹配,使 Jetpack Compose 父组件能够根据 React Native 内容调整自身尺寸 - 不使用
matchContents:shadow node 的尺寸会设置为与父 Jetpack Compose 视图的尺寸匹配,使 React Native 内容填充可用空间(适用于flex: 1布局)
注意: 将单个 React Native 元素作为子元素传入。
RNHostView只测量和布局它的第一个子元素,因此请将多个视图包裹在一个父级View中,并让该视图负责排列它们。
安装
If you are installing this in an existing React Native app, make sure to install expo in your project.
用法
使用 matchContents 的基本用法
当你希望 Jetpack Compose 父组件根据 React Native 内容调整自身尺寸时,请使用 matchContents。
不使用 matchContents 的弹性内容
在 React Native 内容中使用 flex: 1 时,请省略 matchContents 属性,使内容填充可用的 Jetpack Compose 空间。
与 ModalBottomSheet 一起使用
RNHostView 在 ModalBottomSheet 中使用效果良好,可用于显示交互式 React Native 内容。
底部表单中的弹性 React Native 内容
使用不带 matchContents 的 RNHostView,让 React Native 视图填充底部表单中的剩余空间。将其与父级 Column 上的 height 修饰符结合使用,以控制底部表单的尺寸。
API
import { RNHostView } from '@expo/ui/jetpack-compose';
Component
Type: React.Element<RNHostProps>
boolean • Default: falseWhen true, the RNHost will update its size in the Jetpack Compose view tree to match the children's size.
When false, the RNHost will use the size of the parent Jetpack Compose View.
Can be only set once on mount.
(event: LayoutChangeEvent) => voidCalled on mount and whenever this view's layout in the React Native view tree changes.
With matchContents, the reported size is the one measured from the hosted view.