FlatList no parece estar funcionando. Recibo esta advertencia.
VirtualizedList: faltan claves para los elementos, asegúrese de especificar una propiedad clave en cada elemento o proporcione un keyExtractor personalizado.
Código:
<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
fuente
fuente
Respuestas:
Simplemente haz esto:
Fuente: aquí
fuente
keyExtractor={(item, index) => index.toString()}
No necesitas usar
keyExtractor
. Los documentos React Native no están claros, pero lakey
propiedad debe ir en cada elemento de ladata
matriz en lugar de en el componente secundario representado. Entonces en lugar deque es lo que esperarías, solo necesitas poner un
key
campo en cada elemento de ladata
matriz:Y definitivamente no pongas una cadena aleatoria como clave.
fuente
Esto funcionó para mí:
fuente
keyExtractor={ ( item, index ) => `${index}` }
Puedes usar
NOTA: Usar index.toString (), es decir, se espera que sea una cadena.
fuente
Tener una 'identificación' en sus datos
Espero que esto ayude !!!
fuente
Una solución simple es dar a cada entrada una clave única antes de renderizar
FlatList
, ya que eso es lo que el subyacenteVirtualizedList
necesita para rastrear cada entrada.La advertencia aconseja primero hacer esto, o proporcionar un extractor de claves personalizado.
fuente
este código me funciona:
fuente
Esto no dio ninguna advertencia (transformando el índice en una cadena):
fuente
en caso de que sus datos no sean un objeto: [de hecho, está utilizando cada índice de elemento (en la matriz) como clave]
fuente
Intenté la respuesta de Ray, pero luego recibí una advertencia de que "la clave debe ser una cadena". La siguiente versión modificada funciona bien para suprimir el original y esta advertencia de clave de cadena si no tiene una buena clave única en el elemento en sí:
Por supuesto, si tiene una clave única obvia y buena en el elemento en sí, puede usarla.
fuente
Asegúrese de escribir la declaración de devolución, de lo contrario no devolverá nada ... Sucedió conmigo.
fuente
Esto funcionó para mí:
Convirtiendo el
keyExtractor
en unstring
pero en lugar de usar el índice, use un número generado al azar.Cuando lo usé
keyExtractor={(item, index) => index.toString()}
, nunca funcionó y todavía echó una advertencia. Pero tal vez esto funciona para alguien?fuente
flatlists