#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>