首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在ios中react-native的onLayout出现的顺序是随机的?

为什么在ios中react-native的onLayout出现的顺序是随机的?
EN

Stack Overflow用户
提问于 2019-12-20 20:30:43
回答 1查看 216关注 0票数 2

为什么在IOS设备上的array.map中使用react-native的onlayout会以明显随机的顺序返回?

我在一个函数中使用onlayout,该函数根据对象数组返回许多可触摸不透明组件。它找到第一个尚未通过的位置,然后使用以下代码存储其位置以滚动到该位置:

代码语言:javascript
运行
复制
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在布局上的使用方式有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2021-08-04 06:19:32

代码语言:javascript
运行
复制
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>
   )

})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59425313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档