Можно ли предотвратить первую отрисовку и перейти к componentDidMount?
У меня есть список со списком записей. при нажатии каждой записи пользователь будет перенаправлен на страницу с подробными сведениями. когда пользователь возвращается на страницу списка, страница списка должна сохранять свою позицию прокрутки (т.е. пользователь должен перейти к той же записи, на которой он нажал). МойFlatList
как показано ниже,
<FlatList
ref={ref => this.flatListRef = ref}
data={equipmentsList}
renderItem={({ item, index }) => this.renderEquipments(item, index)}
keyExtractor={item => item.id.toString()}
onScroll={(e) => this.handleScroll(e)}
/>
каждый раз, когда пользователь прокручивает страницу, положение прокрутки сохраняется с помощью onScroll
способ использовать его позже
onScroll={(e) => this.handleScroll(e)}
вот handleScroll
метод
handleScroll(event) {
this.setState({ scrollPosition: event.nativeEvent.contentOffset.y });
}
А вот код для прокрутки FlatList
в желаемую позицию, когда пользователь возвращается со страницы сведений на страницу списка
componentDidMount() {
this.flatListRef.scrollToOffset({ offset: scrollPosition, animated: false });
}
Я делаю это в componentDidMount
так как, this.flatListRef
доступен до тех пор, пока компонент не отобразится хотя бы один раз.
здесь проблема, когда происходит первый рендер FlatList
отображается без какой-либо позиции прокрутки, а затем при вызове componentDidMout FlatList
рендеринг с позицией прокрутки (прокрутка к желаемому элементу списка). это поведение, по-видимому, заметно пользователю, что рендеринг происходит дважды.
Здесь мои сомнения,
1. можно ли предотвратить первый рендер так, чтобы componentDidMount
только сделает FlatList
?
или
2.Есть ли альтернатива, чтобы поместить пользователя в ту же позицию прокрутки, когда он возвращается со страницы сведений на страницу списка?
Спасибо.