React-Native Flatlist具有动态项目高度的getItemLayout

问题描述 投票:13回答:3

我正在尝试在平面列表上实现scrollToIndex函数,以使其在呈现时滚动到特定项目。我遇到的问题是,平面列表呈现的项目具有minHeight。问题在于,平面列表需要实现一个函数来计算每个元素的偏移量。我想不出一种方法来pre-render列表,并获取其中每个项目的高度。如您所见,我只是为偏移量添加了一个静态数字,而这不是我所需要的。

<FlatList
  data={data}
  renderItem={this.renderItem}
  getItemLayout={(dat, index) => {
    let offset = 0;
    for (let i = 0; i < index; i++) {
      if (data[i].headerText) {
        offset += 33;
      } else {
        offset += 80;
      }
    }
    return { length: 0, offset, index }
  }
  }
  ref={(ref) => { this.flatListRef = ref; }}
/>
react-native
3个回答
1
投票

包装在Flatlist中呈现的每个组件的View可以调用一个名为onLayout的回调,该回调提供有关组件的信息。您可以在父组件的上下文中管理一个数组,该组件不会通过每个组件的唯一ID来卸载(对Relayjs的唯一中继ID而言,这对我来说很容易。onLayout可以添加其尺寸和参考ID,以便在计算偏移量,则具有这些尺寸。当列表中的某个组件卸载时,可以从该数组中删除它。


0
投票

这是我可以找到的最佳解决方案:https://snack.expo.io/@drorbiran/initialscrollposition


-1
投票

© www.soinside.com 2019 - 2024. All rights reserved.