为什么在IOS设备上的array.map中使用react-native的onlayout会以明显随机的顺序返回?
我在一个函数中使用onlayout,该函数根据对象数组返回许多可触摸不透明组件。它找到第一个尚未通过的位置,然后使用以下代码存储其位置以滚动到该位置:
renderScrollViewContent () {
var data = this.state.dataSource.topics[this.state.TopicID].programs
return (
<View style={{flex: 1, marginTop: 7}}>
{
data.map((l, i) => (
console.log("B:" + l.title),
<TouchableOpacity key={i}
onLayout={event => {
console.log("C:" + l.title)
if (this.state.scrollPosition === 0 && Moment().isBefore(l.end_time)) {
const layout = event.nativeEvent.layout
this.state.scrollPosition = layout.y
...
问题是,虽然B:的顺序总是相同的,但C:每次都是不同的,就像它是异步绘制的一样,但只在IOS设备上- android测试每次都显示相同。
有没有办法让它同步,或者以其他方式获得第一个结束时间尚未过去的数组元素的y位置?ios和android在布局上的使用方式有什么不同?
发布于 2021-08-03 22:19:32
const setCoordinates = (event, itemIndex) => {
console.log('itemIndex:', itemIndex)
// and your logic of itemIndex
}
items.map((item, index)=> {
return (
<View
key={index}
onLayout={(event) => setCoordinates(event, index)}
>
<Text>TextExample<Text>
</View>
)
})
https://stackoverflow.com/questions/59425313
复制相似问题