reactjs - 如何从 FlatList 中获取 renderItem 的高度?
问题描述
我的目标是获取组件的函数<View></View>
使用的高度,并将其用于内部的组件renderItem
<FlatList />
<Image />
renderItem
const renderItem = () => {
let height;
return
<View onLayout={event => {height = event.nativeElement.layout.height}}>
<Image style={{width: height}]/> // I wish to use it like this.
</View>
}
高度确实发生了变化,但不幸的是,它不会重新渲染。我也尝试将re-render
模式与 一起使用React.useState()
,不幸的是,renderItem
函数不是 React 函数。
解决方案
您可以使用本地状态来存储该height
值。由于提到renderItem
的不是反应函数,只需将height
state 值及其 setter 函数作为来自 Parent 组件的 props传递renderItem()
。所以当这个height
状态值改变时,它会重新渲染组件。
const renderItem = (height,setHeight) => {
return
<View onLayout={event => setHeight(event.nativeElement.layout.height)}>
<Image style={{width: height}}/>
</View>
}
并从renderItem
调用的父组件
const ParentComponent = () => {
const [height,setHeight] = useState();
...
...
renderItem(height,setHeight)
}
推荐阅读
- python - keras lstm时间序列数据
- php - 具有代表产品 ID 的名称的多个输入
- html - 使用 Ajax 防止表单提交后刷新页面(表单名称未知)
- sql - 如何在comboamount列中添加其他列的值
- oracle - 如何设置自定义 NLS 参数以在 docker 上安装 oracle 12c
- cassandra - 无法登录谷歌云平台托管的datastax Cassandra集群中的cqlsh
- algorithm - 接入点之间几何加权质心的计算复杂度(Big-O 表示法)
- typo3 - 来自新闻的断开链接,内部链接以默认语言隐藏的页面
- c# - 使用泛型的 Dapper 方法
- java - 为什么我的函数提供无限输出?