Как получить высоту каждого элемента в getItemLayout, если высота является динамической? - PullRequest
3 голосов
/ 07 марта 2019

Я хочу использовать getItemLayout, чтобы повысить эффективность <FlatList />.

Но если использовать onLayout, чтобы получить нестабильную высоту моего списка, возможно, 128, 230 или 183.

Таким образом, установка itemHeight для 128 в getItemLayout не работает должным образом.

Можно ли каким-либо другим способом разрешить моему itemHeight получить динамическую высоту в моем getItemLayout?

onLayout(event) {
  const {x, y, height, width} = event.nativeEvent.layout;
  console.log('height:', height); // the height is dynamic
}

renderItem = ({ item }) => {
  return (
    <View onLayout={(event) => this.onLayout(event)} style={styles.floorView} style={styles.itemView}>
      <Text>{item.name}</Text>
    </View>
  );
}

<FlatList
  data={DUMMY_LIST}
  ref={(ref) => { this.flatListRef = ref; }}
  renderItem={this.renderItem}
  numColumns={1}
  keyExtractor={(item, index) => index.toString()}
  getItemLayout={(data, index)=> {
  return { length: itemHeight, offset: itemHeight * index , index };
  }}
/>
...