Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

364
Visualizações
React.js, ¿cómo usar correctamente la función map() para mostrar datos?

Estoy tratando de mostrar los datos del usuario en una de mis páginas en una aplicación de electrones. Obtengo los datos de firebase/firestore y luego los coloco en una matriz, luego, quiero mostrar esos datos en una tabla pero no puedo mostrar los datos en la página.

Aquí está mi código:

 function Home() { const [allUsers] = useState([]); useEffect(() => { const fetchData = async () => { try { const querySnapshot = await getDocs(collection(db, 'users')); let allDocs = []; querySnapshot.forEach((doc) => { allDocs.push({ ...doc.data(), id: doc.id }); }); for (const item of allDocs) { allUsers.push(item); } } catch (err) { console.log(err); } console.log(allUsers) }; fetchData(); }, []); return <div className="home"> {Object.keys(allUsers).map((keyName) => ( <p>{allUsers[keyName].firstname}</p> ))} </div>; }

Así es como se ven los datos:

Datos

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Debería usar un setter de estado para actualizar allUsers . Estás mutando datos (patrón anti React). Intenta hacerlo (agregué comentarios en el código):

 function Home() { const [allUsers, setAllUsers] = useState([]); // line I changed useEffect(() => { const fechedUsers =[]; // line I added const fetchData = async () => { try { const querySnapshot = await getDocs(collection(db, 'users')); let allDocs = []; querySnapshot.forEach((doc) => { allDocs.push({ ...doc.data(), id: doc.id }); }); for (const item of allDocs) { fechedUsers.push(item); } } catch (err) { console.log(err); } setAllUsers(fechedUsers) // line I added }; fetchData(); }, []); // lines I changed return <div className="home"> {allUsers.map(user => <p>{user.firstname}</p>)} </div>; }
about 4 years ago · Juan Pablo Isaza Relatório

0

Actualmente usa Object.keys() para mapear sobre la matriz. Cuando usa esta función, recibe una matriz con todos los índices fuera de la matriz. Entonces, esto significa que obtendrá una matriz con los datos [0, 1, ... ] dependiendo de la longitud de los datos.

Pero debido a que usa una matriz, puede mapear inmediatamente todos los objetos en la matriz. Como esto:

 return <div className="home"> {allUsers.map((user) => ( <p>{user.firstname}</p> ))} </div>

La variable de usuario será el objeto que haya insertado en la matriz allUsers. También debe usar un setter de estado como useState

about 4 years ago · Juan Pablo Isaza Relatório

0

No necesita usar el índice para iterar sobre la respuesta. Cuando usa la función de mapa, obtiene acceso al índice como un parámetro dentro de la función de mapa y puede usarlo si es necesario.

 return ( <div className="home"> {allUsers.map((user, index) => { return( <div key={index} className='user-data'> //if you're using a table might need to change the `p` tag with `td` inside a `tr` <p>{user.firstname} </p> </div> ) } )} </div>);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda