Mam sekcję wydarzeń, która zawiera nagłówki sekcji zawierające datę. Muszę być w stanie przeskoczyć do określonych dat, a także ustawić początkową pozycję przewijania na pierwszą datę w przyszłości.ReactNative ListView ustawienie początkowej pozycji przewijania po załadowaniu danych
Aby przeskoczyć do konkretnych dat próbowałem zapisać ich pozycje y w stanie.
renderSectionHeader= (sectionData, sectionID) => (
<View
onLayout={(event) => {
const { y } = event.nativeEvent.layout;
const sectionPosition = { [sectionID]: y };
const sectionPositions = Object.assign({}, this.state.sectionPositions, sectionPosition);
this.setState({ sectionPositions });
}}
...
wpadłem na problemy z tym podejściem, choć jak renderSectionHeader nie nazywa się na elementach, które są dalej w dół listy (ze względu na leniwe rendering).
Próbowałem następnie matematycznie obliczyć pozycję, ale powoduje to wyświetlenie każdej sekcji na ekranie podczas zbliżania się do podanej daty.
Czy istnieje sposób na osiągnięcie tego, czego potrzebuję?
ZWIĄZANE
React Native ListView: How to scroll to a particular row
https://github.com/facebook/react-native/issues/499
UPDATE
W moim app Znam wszystkie wiersze są dokładnie tej samej wysokości.
Używanie contentOffset={{ y: offsetY }}
zamiast setScroll
nie działa, ponieważ nadal musi renderować wszystkie elementy do danego elementu do pracy.
Korzystanie z initialListSize={99999999}
działa, ale powoduje, że strona jest bardzo wolna i ostrzegano przed jej użyciem.
UPDATE 2
Czy to możliwe, aby zapewnić mój początkowej zawartości do źródła danych, a następnie zaktualizować dane, aby dodać dodatkowe elementy przed i po elementach aktualnie na ekranie?
Czy istnieje biblioteka, której nie znalazłem, co jest potrzebne?
Jeśli u przechowywania y pozycje przed danymi ładowane, więc r nieistotne już, prawda? – gran33
Zapisane pozycje y są w porządku i mogę przewijać do nich, problem polega tylko na tym, że niektóre nagłówki sekcji są renderowane z powodu leniwego renderowania, więc nie mogę przewijać elementów znajdujących się niżej na liście – Tom
"'nie możesz mieć swojego ciasta i jedz "", jeśli chcesz leniwego ładowania, więc to jest sens tego, ur leniwy na ładowanie całego 'listView'. Zakładam, że nawet na natywnym (iOS) będziesz miał ten problem. – gran33