Po przejściu na natywną wersję 0.61 otrzymuję wiele takich ostrzeżeń:
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
Z czego jeszcze VirtualizedList-backed container
powinienem korzystać i dlaczego nie zaleca się takiego używania?
javascript
reactjs
react-native
David Schilling
źródło
źródło
Odpowiedzi:
Jeśli ktoś nadal szuka sugestii dotyczącej problemu opisanego tutaj przez @Ponleu i @Davida Schillinga (w odniesieniu do treści wykraczających poza FlatList), to takie podejście zastosowałem:
Możesz przeczytać więcej na ten temat tutaj: https://facebook.github.io/react-native/docs/flatlist#listheadercomponent
Mam nadzieję, że to komuś pomaga. :)
źródło
ScrollView
iFlatList
- otrzymasz niespójne zachowanie przewijania. Sposób przedstawiony w tej odpowiedzi daje w wyniku tylko 1 pojemnik przewijania, aw nagłówku / stopce możesz umieścić dowolny widok, bez względu na to, jak skomplikowany.useMemo
haka dostarczonego przez React, aby uniknąć ponownego renderowania. Więcej informacji tutaj: reagjs.org/docs/hooks-reference.html#usememo Daj mi, jeśli to pomocne. :)Na wypadek, gdyby to komuś pomogło, tak naprawiłem błąd w moim przypadku.
Miałem
FlatList
gniazdo wScrollView
:i pozbyłem się tego
ScrollView
, używającFlatList
do renderowania wszystkiego, czego potrzebowałem, co pozbyło się ostrzeżenia:źródło
Patrząc na przykłady w dokumentach zmieniłem kontener z:
do:
i wszystkie te ostrzeżenia zniknęły.
źródło
FlatList
wnętrznościScrollView
i chcą, że zawartość być przewijane?ScrollView
środku trochę treści, a potemFlatList
także wewnątrzScrollView
. I chcę, aby cały ekran przewijał się razem.Moim zdaniem mogę użyć mapy zamiast FlatList. Ale w moim przypadku nie chcę pokazywać dużej listy. Nieużywanie FlatList może powodować problemy z wydajnością. więc użyłem tego, aby ukryć ostrzeżenie https://github.com/GeekyAnts/NativeBase/issues/2947#issuecomment-549210509
źródło
Ostrzeżenie pojawia się, ponieważ
ScrollView
iFlatList
ma tę samą logikę, jeśli jestFlatList
uruchomione w środkuScrollView
, jest duplikowaneNawiasem mówiąc
SafeAreaView
, nie działa dla mnie, jedynym sposobem na rozwiązanie jestBłąd znika
źródło
Wypróbowałem kilka sposobów rozwiązania tego problemu, w tym
ListHeaderComponent
lubListFooterComponent
, ale to wszystko nie pasowało do mnie.układ, który chciałem osiągnąć, jest taki i chciałem raz przewinąć.
Najpierw chcę powiedzieć dzięki temu problemowi i komentarzom, które dały mi mnóstwo pomysłów.
Myślałem o
ListHeaderComponent
miejscach nad płaską listą, ale ponieważ moimFlatlist
kierunkiem była kolumna, nagłówek, który chciałem umieścić, znajdował się po lewej stronieFlatlist
:(Potem musiałem spróbować
VirtualizedList-backed
. Właśnie próbowałem spakować wszystkie komponentyVirtualizedList
, gdzierenderItems
daje indeks i tam mogłem warunkowo przekazać komponentyrenderItems
.Mógłbym z tym pracować
Flatlist
, ale jeszcze nie próbowałem.Wreszcie wygląda to tak.
i oczywiście w stanie przewijać cały ekran.
źródło
Ten problem pojawia się, gdy używasz
<FlatList />
wnętrza<ScrollView>
z tą samą orientacją.Aby to naprawić, po prostu dodaj „poziomą” do swojej FlatList:
Uwaga: Twoja płaska lista będzie renderowana w poziomie
źródło