Después de actualizar a react-native 0.61, recibo muchas advertencias como esta:
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
¿Cuál es el otro VirtualizedList-backed container
que debo usar, y por qué ahora se recomienda no usar así?
javascript
reactjs
react-native
David Schilling
fuente
fuente
Respuestas:
Si alguien todavía está buscando una sugerencia sobre el problema que @Ponleu y @David Schilling han descrito aquí (con respecto al contenido que va por encima de la lista plana), entonces este es el enfoque que tomé:
Puede leer más sobre esto aquí: https://facebook.github.io/react-native/docs/flatlist#listheadercomponent
Esperemos que ayude a alguien. :)
fuente
ScrollView
yFlatList
- obtendrá un comportamiento de desplazamiento inconsistente. La forma presentada en esta respuesta da como resultado solo 1 contenedor de desplazamiento y en Encabezado / Pie de página puede poner cualquier vista, sin importar cuán compleja sea.useMemo
gancho provisto por React, para evitar re-renderizaciones. Más información aquí: reactjs.org/docs/hooks-reference.html#usememo Déjame si es útil. :)En caso de que esto ayude a alguien, así es como solucioné el error en mi caso.
Tenía un
FlatList
anidado dentro de unScrollView
:y me deshice del
ScrollView
uso deFlatList
para renderizar todo lo que necesitaba, lo que eliminó la advertencia:fuente
Mirando los ejemplos en documentos he cambiado el contenedor de:
a:
y todas esas advertencias desaparecieron.
fuente
FlatList
interiorScrollView
y quiero que ese contenido sea desplazable?ScrollView
dentro de ese contenido y luegoFlatList
también dentroScrollView
. Y quiero que toda la pantalla se desplace juntos.En mi opinión, puedo usar el mapa en lugar de FlatList. Pero en mi caso no quiero mostrar una lista grande. No usar FlatList puede causar problemas de rendimiento. así que usé esto para suprimir la advertencia https://github.com/GeekyAnts/NativeBase/issues/2947#issuecomment-549210509
fuente
La advertencia aparece porque
ScrollView
yFlatList
comparte la misma lógica, si seFlatList
ejecuta dentroScrollView
, está duplicadaPor cierto
SafeAreaView
no funciona para mí, la única forma de resolver esEl error desaparece
fuente
Intenté algunas formas de resolver esto, incluyendo
ListHeaderComponent
oListFooterComponent
, pero no me quedó bien.El diseño que quería lograr es así, y quería que me desplazaran una vez.
Primero quiero agradecer este problema y comentarios, que me dieron muchas ideas.
Estaba pensando en
ListHeaderComponent
lugares sobre la lista plana, pero comoFlatlist
la dirección de mi era la columna, el encabezado que quería colocar estaba a la izquierda deFlatlist
:(Luego tuve que probarme
VirtualizedList-backed
algo. Solo intenté empaquetar todos los componentesVirtualizedList
, donderenderItems
da índice y allí podría pasar componentes condicionalmenterenderItems
.Podría haber trabajado con esto
Flatlist
, pero aún no lo he intentado.Finalmente se ve así.
y, por supuesto, capaz de desplazar toda la pantalla.
fuente
Este problema viene cuando está usando
<FlatList />
adentro<ScrollView>
con la misma orientación.Para solucionar esto, simplemente agregue "horizontal" a su FlatList:
NB: su FlatList se representará horizontalmente
fuente