Je reçois le:
"VirtualizedList: missing keys for items, make sure to specify a key property on an item or provide a custom keyExtractor"
assez déroutant ..., le tableau que je passe a une propriété de clé définie dans chaque objet du tableau. J'ai ce tableau défini dans this.state. J'ai exécuté une impression rapide dans la console pour être sûr: print out of array
Chaque objet du tableau est défini comme:
var obj = {key: doc.id, value: doc.data()};
(la doc et les données proviennent d'une autre partie de mon application, mais je sais que doc.id est unique)
Après quelques recherches sur Google, j'ai ensuite essayé de définir un Key Extractor comme suit:
_keyExtractor = (item, index) => item.key;
et puis voici ma définition de flatlist:
<FlatList
style={{}}
data={this.state.FeedDataCollection}
keyExtractor={this._keyExtractor}
renderItem={(rowData) =>this.RenderFeedCard(rowData)}
/>
Toujours en train de recevoir la même erreur, à ce stade, je ne sais pas trop comment gérer cela ni ce qu’il fait mal. Des idées? Merci beaucoup!
"VirtualizedList: clés manquantes pour les éléments, assurez-vous de spécifier une propriété key Sur un élément ou fournissez un keyExtractor personnalisé"
Ceci est un avertissement que les éléments de la liste sont des clés manquantes. Ces clés uniques permettent à la VirtualizedList (sur laquelle est construite la FlatList) de suivre les éléments et sont vraiment importantes en termes d’efficacité.
Vous devrez choisir un accessoire de clé unique, comme un id
ou un email
.
La keyExtractor
revient à utiliser la index
par défaut. Mais l'avertissement restera visible.
Exemple: Un objet défini en tant que {key: doc.id, value: doc.data()}
peut être utilisé dans l'extracteur en tant que:
keyExtractor={(item, index) => item.key}
Le composant Flatlist devrait ressembler à ça:
<FlatList
style={{}}
data={this.state.FeedDataCollection}
keyExtractor={(item, index) => item.key}
renderItem={(rowData) =>this.RenderFeedCard(rowData)}
/>
je fais cela et travaille pour moi:
keyExtractor={(item, index) => 'key'+index}
@Sarantis Tofas a la bonne réponse. Résolu pour moi! Deux notes supplémentaires basées sur les commentaires:
Essayez d'utiliser listkey
au lieu de keyExtractor
, cela a fonctionné pour moi