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

307
Vistas
¿Cómo esperar los datos provenientes de una API como accesorio en un componente?

Estoy tratando de enviar un accesorio en un componente una vez que mis datos se cargan desde una API. Sin embargo, a pesar de que estoy usando async await para esperar de mis datos, sigo recibiendo un error de: Error: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.

mi proceso :

  • Tener dos estados establecidos: 1) updateLoading y 2) setRecordGames
  • Una vez que se carguen los datos, configuraré updateLoading en falso y luego configuraré recordGames con los datos de la API.

Mi problema : parece que cuando paso datos en el componente, React no espera a que se carguen mis datos y me da un error.

Este es mi código:

 import useLoadRecords from '../../hooks/useLoadRecords' import { CustomPieChart } from '../charts/CustomPieChart' export const GameDistribution = () => { const { records, loading } = useLoadRecords() let data = records console.log(data) // This logs out the records array return ( <div> // once loading is false, render these components {!loading ? ( <> <div> {recordGames.length > 0 ? ( // This line seem to run as soon as the page loads and I think this is the issue. recordGames is empty at first, but will populate itself when the data loads records.length > 0 && <CustomPieChart data={data} /> ) : ( <div> No games </div> )} </div> </> ) : ( <span>Loading...</span> )} </div> ) }
 // useLoadRecords.js import { useState, useEffect } from 'react' import { API } from 'aws-amplify' import { listRecordGames } from '../graphql/queries' // Centralizes modal control const useLoadRecords = () => { const [loading, setLoading] = useState(false) const [records, updateRecords] = useState([]) useEffect(() => { fetchGames() // eslint-disable-next-line react-hooks/exhaustive-deps }, []) const fetchGames = async () => { try { let recordData = await API.graphql({ query: listRecordGames, }) setLoading(false) let records = recordData.data.listRecordGames.items.map( (item) => item.name ) let result = Object.values( records.reduce((acc, el) => { if (!acc[el]) acc[el] = { name: el, plays: 0 } acc[el].plays++ return acc }, {}) ) updateRecords(result) } catch (err) { console.error(err) } } return { records, loading } } export default useLoadRecords
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Haría un gancho para los datos y le asignaría datos al buscar, puede clonar los datos usando el operador de propagación y esto lo pasa. o mejor devolver ese componente solo si hay algo en los datos, por ejemplo

 { data && <CustomPieChart data={recordGames} /> }

y sería bueno hacer un cargador (gif/svg) usando su enlace de carga para que pueda mostrarse cuando los datos aún se están recuperando.

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