FlatList ne semble pas fonctionner. Je reçois cet avertissement.
VirtualizedList: clés manquantes pour les éléments, assurez-vous de spécifier une propriété de clé sur chaque élément ou fournissez un keyExtractor personnalisé.
Code:
<FlatList
data={[{name: 'a'}, {name: 'b'}]}
renderItem={
(item) => <Text key={Math.random().toString()}>{item.name}</Text>
}
key={Math.random().toString()} />
react-native
Edison D'souza
la source
la source
Réponses:
Faites simplement ceci:
Source: ici
la source
keyExtractor={(item, index) => index.toString()}
Vous n'avez pas besoin d'utiliser
keyExtractor
. Les documents React Native sont un peu flous mais lakey
propriété doit aller dans chaque élément dudata
tableau plutôt que dans le composant enfant rendu. Donc plutôt quece à quoi vous vous attendez, il vous suffit de mettre un
key
champ dans chaque élément dudata
tableau:Et ne mettez certainement pas une chaîne aléatoire comme clé.
la source
Cela a fonctionné pour moi:
la source
keyExtractor={ ( item, index ) => `${index}` }
Vous pouvez utiliser
REMARQUE: en utilisant index.toString (), c'est-à-dire qu'il devrait être une chaîne.
la source
Avoir un 'identifiant' dans vos données
J'espère que cela t'aides !!!
la source
Une solution simple consiste simplement à donner à chaque entrée une clé unique avant le rendu avec
FlatList
, car c'est ce dont le sous-jacent aVirtualizedList
besoin pour suivre chaque entrée.L'avertissement conseille de faire cela en premier ou fournit un extracteur de clé personnalisé.
la source
ce code fonctionne pour moi:
la source
Cela n'a donné aucun avertissement (transformation de l'index en chaîne):
la source
au cas où vos données ne seraient pas un objet: [en fait, il utilise chaque index d'élément (dans le tableau) comme clé]
la source
J'ai essayé la réponse de Ray, mais j'ai reçu un avertissement indiquant que "la clé doit être une chaîne". La version modifiée suivante fonctionne bien pour supprimer l'original et cet avertissement de clé de chaîne si vous n'avez pas une bonne clé unique sur l'élément lui-même:
Bien sûr, si vous avez une clé unique évidente et bonne sur l'élément lui-même, vous pouvez simplement l'utiliser.
la source
Assurez-vous d'écrire l'instruction return sinon elle ne renverra rien..Happened avec moi.
la source
Cela a fonctionné pour moi:
Transformer le
keyExtractor
en unstring
mais au lieu d'utiliser un index, utilisez un nombre généré de manière aléatoire.Quand je l'ai utilisé
keyExtractor={(item, index) => index.toString()}
, cela n'a jamais fonctionné et a quand même émis un avertissement. Mais peut-être que cela fonctionne pour quelqu'un?la source
flatlists