Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

312
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!