FlatList tampaknya tidak berfungsi. Saya mendapat peringatan ini.
VirtualizedList: kunci yang hilang untuk item, pastikan untuk menentukan properti kunci pada setiap item atau berikan kustom keyExtractor.
Kode:
<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
sumber
sumber
Jawaban:
Cukup lakukan ini:
Sumber: di sini
sumber
keyExtractor={(item, index) => index.toString()}
Anda tidak perlu menggunakan
keyExtractor
. The React Native docs sedikit tidak jelas tetapikey
properti harus masuk di setiap elemendata
array daripada di komponen turunan anak. Jadi, bukannyayang mana yang Anda harapkan, Anda hanya perlu meletakkan
key
bidang di setiap elemendata
array:Dan jelas jangan meletakkan string acak sebagai kuncinya.
sumber
Ini bekerja untuk saya:
sumber
keyExtractor={ ( item, index ) => `${index}` }
Kamu bisa memakai
CATATAN: Menggunakan index.toString () yaitu diharapkan menjadi string.
sumber
Memiliki 'id' di data Anda
Semoga ini membantu !!!
sumber
Solusi sederhana adalah dengan hanya memberikan setiap entri kunci yang unik sebelum rendering
FlatList
, karena itulah yang mendasarinyaVirtualizedList
perlu melacak setiap entri.Peringatan tidak menyarankan melakukan hal ini terlebih dahulu, atau memberikan ekstraktor kunci khusus.
sumber
kode ini berfungsi untuk saya:
sumber
Ini tidak memberikan peringatan apa pun (mengubah indeks menjadi string):
sumber
jika data Anda bukan objek: [sebenarnya itu menggunakan setiap indeks item (dalam array) sebagai kunci]
sumber
Mencoba jawaban Ray tetapi kemudian mendapat peringatan bahwa "kuncinya harus berupa string". Versi modifikasi berikut berfungsi dengan baik untuk menekan yang asli dan kunci ini peringatan jika Anda tidak memiliki kunci unik yang baik pada item itu sendiri:
Tentu saja jika Anda memiliki kunci unik yang jelas dan bagus pada item itu sendiri, Anda bisa menggunakannya.
sumber
Pastikan untuk menulis pernyataan pengembalian jika tidak maka tidak akan menghasilkan apa-apa ..
sumber
Ini bekerja untuk saya:
Mengubah
keyExtractor
menjadistring
tetapi bukannya menggunakan indeks menggunakan nomor yang dihasilkan secara acak.Ketika saya menggunakan
keyExtractor={(item, index) => index.toString()}
, itu tidak pernah berhasil dan masih mengeluarkan peringatan. Tapi mungkin ini bekerja untuk seseorang?sumber
flatlists