Após a atualização para o react-native 0.61, recebo muitos avisos assim:
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
Qual é o outro VirtualizedList-backed container
que devo usar e por que agora é aconselhável não usar dessa maneira?
javascript
reactjs
react-native
David Schilling
fonte
fonte
Respostas:
Se alguém ainda está procurando uma sugestão para o problema descrito por @Ponleu e @David Schilling aqui (sobre conteúdo que está acima do FlatList), essa é a abordagem que eu adotei:
Você pode ler mais sobre isso aqui: https://facebook.github.io/react-native/docs/flatlist#listheadercomponent
Espero que ajude alguém. :)
fonte
ScrollView
eFlatList
- você terá um comportamento inconsistente de rolagem. A maneira apresentada nesta resposta resulta em apenas 1 contêiner de rolagem e no Cabeçalho / Rodapé você pode exibir qualquer visualização, por mais complexa que seja.useMemo
gancho fornecido pelo React, para evitar novas renderizações. Mais informações aqui: reactjs.org/docs/hooks-reference.html#usememo Deixe-me se for útil. :)Caso isso ajude alguém, foi assim que corrigi o erro no meu caso.
Eu tinha um
FlatList
aninhado dentro de umScrollView
:e me livrei disso
ScrollView
usando oFlatList
para renderizar tudo o que eu precisava, o que acabou com o aviso:fonte
Observando os exemplos nos documentos dos quais mudei o contêiner de:
para:
e todos esses avisos desapareceram.
fonte
FlatList
dentroScrollView
e quiser que esse conteúdo seja rolável?ScrollView
interior de que algum conteúdo e, em seguida, umFlatList
também dentro doScrollView
. E eu quero que a tela inteira role juntos.Na minha opinião, eu posso usar o mapa em vez do FlatList. Mas no meu caso, não quero mostrar uma lista grande. Não usar o FlatList pode causar problemas de desempenho. então usei isso para suprimir o aviso https://github.com/GeekyAnts/NativeBase/issues/2947#issuecomment-549210509
fonte
O aviso aparece porque,
ScrollView
eFlatList
compartilha a mesma lógica, seFlatList
executado dentroScrollView
, é duplicadoA propósito
SafeAreaView
, não funciona para mim, a única maneira de resolver éO erro desaparece
fonte
Eu tentei algumas maneiras de resolver isso, incluindo
ListHeaderComponent
orListFooterComponent
, mas tudo não se encaixava para mim.o layout que eu queria alcançar era assim, e eu queria ser rolado uma vez.
Primeiro, quero agradecer a essa questão e comentários, que me deram várias idéias.
Eu estava pensando em
ListHeaderComponent
lugares acima da Flatlist, mas comoFlatlist
a direção da minha coluna era coluna, o cabeçalho que eu queria colocar ficava à esquerda doFlatlist
:(Então eu tive que tentar
VirtualizedList-backed
algo. Eu apenas tentei empacotar todos os componentesVirtualizedList
, onderenderItems
dá o índice e lá eu poderia passar os componentes condicionalmenterenderItems
.Eu poderia ter trabalhado nisso
Flatlist
, mas ainda não tentei.Finalmente, fica assim.
e, claro, capaz de rolar a tela inteira.
fonte
Esse problema ocorre quando você está usando o
<FlatList />
interior<ScrollView>
com a mesma orientação.Para corrigir isso, basta adicionar "horizontal" ao seu FlatList:
NB: O seu FlatList será renderizado horizontalmente
fonte