import React, { useState, useEffect } from 'react'; import axios from 'axios'; {const CustomerList = () => { const [information, setInformation] = useState([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { if (isLoading) { axios.get('').then((response) => { setInformation((prevInfo) => { return [...prevInfo, response.data]; }); }); } return () => { setIsLoading(false); }; }, [information, isLoading]); return ( <> <h2>Name: </h2> {information.map((item, index) => ( <div> <div>{item[index].customer.firstName}</div> <div>{item[index].customer.lastName}</div> </div> ))} </> ); }; export default CustomerList;¿Alguna forma de evitar esto? ¡Gracias!
Así no es como funciona el map . Con estos argumentos a la devolución de llamada:
information.map((item, index) => ... index es el índice actual cuando se itera sobre la matriz de information , y item es el elemento en ese índice . No es otra copia de toda la matriz. Así que en lugar de esto:
item[index].customer.firstNameSimplemente harías esto:
item.customer.firstName Aparte, al iterar sobre una matriz para generar una lista en React, querrá agregar una key al elemento de nivel superior. Puede usar index para este propósito si lo desea:
{information.map((item, index) => ( <div key={index}> ... </div> ))} O si item tiene un identificador único, puede usarlo en su lugar y eliminar index por completo.
item[index] no es correcto, ya item se refiere al elemento de la matriz en ese index todos modos.
const data = [1,2,3,4,5,6,7,8,9,10] const mappedData = data.map((d, index) => { console.log("index is", index) console.log("d is", d) console.log("-----------------------------") return d }) const data = [1,2,3,4,5,6,7,8,9,10] const mappedData = data.map((d, index) => { console.log("index is", index) console.log("d[index] is", d[index]) //undefined since d is not an array console.log("------------------------------") return d })Cuando map() una matriz de elementos, está manejando cada item por separado, por lo tanto, no necesita el index , puede usar el index como key , lea más sobre listas y claves aquí .
{information.map((item, i) => ( <div key={i}> <div>{item.customer.firstName}</div> <div>{item.customer.lastName}</div> </div> ))}