flatlist scroll to index
Вывожу список через flatlist с подгрузкой данных и после загрузки данных нужно сделать scroll к нужному индексу. Проблема в том, что в списке 500 записей, скролл надо сделать к 250 записи, но он перекидывает на index = 0, если мне надо перейти к первым из 100 записей, то все срабатывает нормально. Изначально выводиться 100 папок и при переходе в папку как раз срабатывает в новом окне этот код:
<FlatList
ref={Ref}
data={data}
initialScrollIndex={activeIndex}
onScrollToIndexFailed={info => {
if (data) {
const wait = new Promise(resolve => setTimeout(resolve, 500));
wait.then(() => {
Ref.current?.scrollToIndex({ index: info.index, animated: false });
});
}
}}
renderItem={renderItem}
keyExtractor={keyExtractor}
onViewableItemsChanged={onViewCallBack}
viewabilityConfig={{viewAreaCoveragePercentThreshold: 30}}
maxToRenderPerBatch={2}
refreshing={refreshing}
onRefresh={onRefresh}
ListEmptyComponent={ListEmptyComponent}
onEndReached={() => {
if (loadPagination === false) {
onEndReached()
}
}}
onEndReachedThreshold={0.3}
/>
Сама функция, которая определяет index и делает скролл
const scrollStart = () => {
if (scrollToId && data?.[0]) {
let index = 0
data.forEach((el, key) => {
if (el.id === scrollToId) {
index = key
}
})
Ref.current?.scrollToIndex({ index: index, animated: false });
setActiveIndex(index)
}
}
useEffect(() => {
scrollStart()
}, [data])