在我们的代码中,我们目前使用onLayout来存储各种组件的高度。
但是,布局偶尔会改变
1)这是在React Native中获得组件高度的最佳方法吗?
2)防止重复呼叫的最佳方法是什么?
我们可以只检查函数是否存在值,但这仍然意味着布局函数被不必要地调用。
示例代码:
storeHeaderHeight(event) {
this.setState({
...this.state,
maxHeight: event.nativeEvent.layout.height
});
}
storeContentHeight(event) {
this.setState({
...this.state,
minHeight: event.nativeEvent.layout.height
});
}
...
<View style={styles.header} onLayout={e => this.storeHeaderHeight(e)}>
<Text style={styles.caret}>{isExpanded ? 'v' : '^'}</Text>
<Text style={styles.title}>{title}</Text>
</View>
...
<View style={styles.content} onLayout={e => this.storeContentHeight(e)}>
{this.props.children}
</View>