Встроенный в React плоский список «getItemLayout» делает его глючным

#react-native #react-native-flatlist

#react-native #react-native-плоский список

Вопрос:

Я использую scrollToOffset и сохраняю текущее смещение, чтобы я мог вернуть плоский список обратно в его старое состояние. Однако для использования scrollToOffset я должен использовать getItemLayout , но его использование делает мой плоский список глючным. С 50 элементами он работает нормально, но с 3000 элементами я не могу прокручивать после первых 200-300 элементов.

Flatlist отображает текстовые элементы, поэтому я попытался получить разные высоты для элементов в зависимости от их содержимого:

 <FlatList
        scrollEventThrottle={1}
        onScroll={this.handleScroll}
        ref={ref => (this.flatList = ref)}
        data={this.state.listData}
        keyExtractor={(item, index) => item.id}
        renderItem={this._renderListItem}
        removeClippedSubviews
        maxToRenderPerBatch={3}
        getItemLayout={(data, index) => ({
              length: (data[index].title.length   data[index].body.length) ** 0.4 * 25,
              offset: (data[index].title.length   data[index].body.length) ** 0.4 * 25 * index,
              index,
    })}
/>
  

Как я могу решить эту проблему с «глючной прокруткой»? Я должен использовать scrollToOffset , поэтому я не могу удалить getItemLayout свойство.

Функция визуализации элемента:

 _renderListItem = ({item, index}) => {
    return (
      <View
        style={{
          height: (item.title.length   item.body.length) ** 0.4 * 25,
        }}
   >
    ....
    </View>