Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

337
Vistas
React Native: cómo renderizar datos de búsqueda en FlatList sin identificación

Estoy tratando de generar datos de una API, pero no tiene una identificación ni ningún dato único para distinguir el elemento.

Así es como se ven los datos cuando hago console.log

 Array [ Object { "photo1": "www.picexample.com", }, Object { "photo2": "www.picexample.com", }, ]

Este es mi código:

Inicio.js

 const [portfolio, setPortfolio] = React.useState([]); const renderItem= ({item}) => { return ( <View> <Image source={{uri: ?}} resizeMode="cover" /> </View> ); } useEffect (() => { .then((result) => { setPortfolio(result.myImage); console.log(portfolio); }) }); return ( <ScrollView> <FlatList scrollEnabled={false} data={portfolio} renderItem={renderItem} keyExtractor={?} /> </ScrollView> );

ACTUALIZACIÓN (Basado en Joel Hager)

 const keyExtractor = (portfolio, idx) => `${Object.keys(portfolio)}-${idx}` const renderItem = ({item}) => { console.log(item); return ( <View> <Image source={{uri: item}} resizeMode="cover" /> </View> ); } return ( <FlatList scrollEnabled={false} data={portfolio} renderItem={renderItem} keyExtractor={keyExtractor} /> );
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sin poder publicar el código React Native en funcionamiento, esto explicará lo que está haciendo conceptualmente.

Está tomando la instancia del elemento en la matriz que se está pasando (el 'elemento') Está tomando todas las claves para ello: Object.keys() Está mostrando la primera

Hay algunas advertencias: espera un valor. Siempre podría usar la fusión nula para hacer otra cosa, pero tendría que saber más sobre los datos para cubrir esos casos. Si siempre obtiene una clave, siempre obtendrá un valor. También puede agregar el valor del índice en el extractor para darle más especificidad. Su código de reacción debería verse así:

 keyExtractor={(item, idx) => `${Object.keys(item)}-${idx}`}

nota: siempre es bueno extraer la función fuera de la lista plana para que no se vuelva a crear cada renderizado. Entonces se vería algo como esto:

 const keyExtractor = (item, idx) => `${Object.keys(item)}-${idx}` ... <Flatlist ... keyExtractor={keyExractor} ...

Más información sobre keyExtractor: https://reactnative.dev/docs/flatlist#keyextractor

El literal de la plantilla pondrá el valor de la cadena de la clave y el índice con un '-' entre ellos. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

 const payload = [ { "photo1": "www.picexample.com", }, { "photo2": "www.picexample.com", }, ] payload.map((item, idx) => console.log(Object.keys(item)[0] + `-${idx}`));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda