Après la mise à niveau vers la version 0.61 native de React, je reçois de nombreux avertissements comme celui-ci:
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
Quel est l'autre VirtualizedList-backed container
que je devrais utiliser, et pourquoi est-il maintenant conseillé de ne pas utiliser comme ça?
javascript
reactjs
react-native
David Schilling
la source
la source
Réponses:
Si quelqu'un cherche toujours une suggestion au problème que @Ponleu et @David Schilling ont décrit ici (concernant le contenu qui va au-dessus de la FlatList), alors c'est l'approche que j'ai adoptée:
Vous pouvez en savoir plus à ce sujet ici: https://facebook.github.io/react-native/docs/flatlist#listheadercomponent
J'espère que cela aide quelqu'un. :)
la source
ScrollView
etFlatList
- vous obtiendrez un comportement de défilement incohérent. La manière présentée dans cette réponse se traduit par un seul conteneur de défilement et dans En-tête / Pied de page, vous pouvez mettre n'importe quelle vue, quelle que soit sa complexité.useMemo
hook fourni par React, pour éviter les re-rendus. Plus d'informations ici: reactjs.org/docs/hooks-reference.html#usememo Laissez-moi si cela est utile. :)Juste au cas où cela aiderait quelqu'un, c'est ainsi que j'ai corrigé l'erreur dans mon cas.
J'avais un
FlatList
niché à l'intérieur d'unScrollView
:et je me suis débarrassé de
ScrollView
en utilisant leFlatList
pour rendre tout ce dont j'avais besoin, ce qui s'est débarrassé de l'avertissement:la source
En regardant les exemples dans les documents, j'ai changé de conteneur depuis:
à:
et tous ces avertissements ont disparu.
la source
FlatList
intérieurScrollView
et que je souhaite que ce contenu puisse défiler?ScrollView
contenu à l'intérieur de ce contenu, puis un contenuFlatList
à l'intérieur duScrollView
. Et je veux que tout l'écran défile ensemble.À mon avis, je peux utiliser map au lieu de FlatList. Mais dans mon cas, je ne veux pas afficher une grande liste. Ne pas utiliser FlatList peut entraîner des problèmes de performances. donc je l'ai utilisé pour supprimer l'avertissement https://github.com/GeekyAnts/NativeBase/issues/2947#issuecomment-549210509
la source
L'avertissement apparaît car
ScrollView
etFlatList
partage la même logique, siFlatList
exécuté à l'intérieurScrollView
, il est dupliquéAu fait
SafeAreaView
cela ne fonctionne pas pour moi, la seule façon de résoudre estL'erreur disparaît
la source
J'ai essayé quelques façons de résoudre ce problème, y compris
ListHeaderComponent
ouListFooterComponent
, mais tout ne me convenait pas.la disposition que je voulais réaliser est comme ça, et je voulais faire défiler une fois.
Je veux d'abord dire merci à ce numéro et à ces commentaires, qui m'ont donné beaucoup d'idées.
Je pensais à des
ListHeaderComponent
endroits au-dessus de la Flatlist, mais comme maFlatlist
direction était la colonne, l'en-tête que je voulais placer était à gauche de laFlatlist
:(Ensuite, j'ai dû essayer
VirtualizedList-backed
quelque chose. J'ai juste essayé d'emballer tous les composantsVirtualizedList
, oùrenderItems
donne l'index et où je pouvais passer des composants sous conditionrenderItems
.J'aurais pu travailler avec
Flatlist
, mais je n'ai pas encore essayé.Enfin, cela ressemble à ceci.
et bien sûr capable de faire défiler tout l'écran.
la source
Ce problème survient lorsque vous utilisez l'
<FlatList />
intérieur<ScrollView>
avec la même orientation.Pour résoudre ce problème, ajoutez simplement "horizontal" à votre FlatList:
NB: Votre FlatList sera rendu horizontalement
la source