Wygląda na to, że FlatList nie działa. Otrzymuję to ostrzeżenie.
VirtualizedList: brak kluczy dla elementów, upewnij się, że określono właściwość klucza dla każdego elementu lub podaj niestandardowy keyExtractor.
Kod:
<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
źródło
źródło
Odpowiedzi:
Po prostu zrób to:
Źródło: tutaj
źródło
keyExtractor={(item, index) => index.toString()}
Nie musisz używać
keyExtractor
. Dokumentacja React Native jest trochę niejasna, alekey
właściwość powinna znajdować się w każdym elemenciedata
tablicy, a nie w renderowanym komponencie potomnym. Więc raczej niżczego można się spodziewać, wystarczy umieścić
key
pole w każdym elemenciedata
tablicy:I zdecydowanie nie umieszczaj losowego ciągu jako klucza.
źródło
To zadziałało dla mnie:
źródło
keyExtractor={ ( item, index ) => `${index}` }
Możesz użyć
UWAGA: Za pomocą index.toString () oczekuje się, że będzie to łańcuch.
źródło
Miej „identyfikator” w swoich danych
Mam nadzieję że to pomoże !!!
źródło
Prostym rozwiązaniem jest po prostu nadanie każdemu wpisowi unikatowego klucza przed renderowaniem za pomocą
FlatList
, ponieważ tegoVirtualizedList
potrzebuje element bazowy, aby śledzić każdy wpis.Ostrzeżenie sugeruje zrobienie tego w pierwszej kolejności lub zapewnia niestandardowy ekstraktor kluczy.
źródło
ten kod działa dla mnie:
źródło
To nie dało żadnego ostrzeżenia (przekształcenie indeksu w łańcuch):
źródło
w przypadku, gdy Twoje dane nie są przedmiotem: [w rzeczywistości używa indeksu każdego elementu (w tablicy) jako klucza]
źródło
Wypróbowałem odpowiedź Raya, ale otrzymałem ostrzeżenie, że „klucz musi być łańcuchem”. Następująca zmodyfikowana wersja działa dobrze, aby ukryć oryginał i to ostrzeżenie o kluczu ciągu, jeśli nie masz dobrego unikalnego klucza na samym elemencie:
Oczywiście, jeśli masz oczywisty i dobry unikalny klucz do samego przedmiotu, możesz go po prostu użyć.
źródło
Upewnij się, że napiszesz instrukcję powrotu, w przeciwnym razie nic nie zwróci .. Stało się ze mną.
źródło
To zadziałało dla mnie:
Zamieniając
keyExtractor
w a,string
ale zamiast używać indeksu, użyj losowo wygenerowanej liczby.Kiedy użyłem
keyExtractor={(item, index) => index.toString()}
, to nigdy nie działało i nadal wyrzucałem ostrzeżenie. Ale może to działa na kogoś?źródło
flatlists