React Native 提供了一个名为RCTRootView
. 您指定 RootView 应该在其中呈现内容的框架,然后它会继续执行它。
不过,在我的用例中,内容视图的大小是动态的,并且取决于传递给 React Native 的数据。这个大小很重要,因为我将把 React Native 视图放入例如一个自调整大小的单元格中。
这是怎么做到的?
React Native 提供了一个名为RCTRootView
. 您指定 RootView 应该在其中呈现内容的框架,然后它会继续执行它。
不过,在我的用例中,内容视图的大小是动态的,并且取决于传递给 React Native 的数据。这个大小很重要,因为我将把 React Native 视图放入例如一个自调整大小的单元格中。
这是怎么做到的?
@fatuhoku 经过一番挖掘后,我得出了相同的结论。对于其他想要这样做的人,这里有一个例子。
// MyReactComponent.jsx (ES6)
// Modules
var React = require('react-native');
var { View } = React;
// Bridge
var ReactBridge = require('NativeModules').ReactBridge;
// Type Definitions
type LayoutEvent = {
nativeEvent: {
layout: {
x: number;
y: number;
width: number;
height: number;
};
};
};
// React Component
class MyReactComponent extends React.Component {
onViewLayout(e: LayoutEvent) {
ReactBridge.setLayout(e.nativeEvent.layout);
}
render() {
return (
<View onLayout={ this.onViewLayout }>
<ChildComponentExample />
</View>
);
}
}
然后在 ObjC 中,您使用React Native 文档中描述的 RCT_EXPORT_METHOD来创建“ReactBridge”并处理通过“setLayout”方法发送的数据。在这种情况下,数据将是一个 NSDictionary,但您可以轻松地只发送布局高度,然后您将获得一个 CGFloat。