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

247
Views
¿Por qué JavaScript representa los datos del gancho useEffect() pero no los procesa cuando se colocan en el cuerpo de la función?

Tengo un archivo JSON llamado teams.json que contiene la estructura básica ("nombre", "edad", "país", "función", "equipo" e "imagen") en un objeto. Estoy usando React para usar la función fetch() para recuperar los datos del archivo JSON local . Cuando llamo al enlace useEffect (que se muestra a continuación), los datos se recuperan del archivo JSON local y puedo llamar a una función useState para almacenar los datos en una variable de estado llamada data .

llamada a la función useEffect()

 //file path filePath = "/src/public/teams.json" const getData = (file) => { fetch(file) .then(res => res.json()) .then(data => setData(data)) .catch(err => console.log("Error fetching data", err) } useEffect(() => { getData(filePath) }, [filePath])

Si trato de editar o acceder a los datos dentro del enlace useEffect(), los datos se pueden recuperar sin ningún problema, como tal.

 .then(data => console.log(data[0]))

Esto devuelve un objeto json que contiene la información necesaria.

 { "name":"R", "image":"https://example.com", "team":"B", "role":"WB", "country":"American", "age":18 }

Sin embargo, en el cuerpo principal de mi aplicación de reacción, si trato de obtener datos del estado de los datos, aparece un error que dice Cannot read properties of undefined , que se muestra a continuación.

Cuerpo de la aplicación React

 return ( <main> {data[0].country} </main> )

Pero me sale este error:

Captura de pantalla de error

He intentado soluciones a foros anteriores de:

Discusión de desbordamiento de pila Axios

Stack Overflow Discusión Error Axios

He movido mi proyecto a la estructura:

 -src --public *some files*

y coloque el archivo JSON en la carpeta pública. Lo lee ahora, pero aún no se renderiza. También he intentado usar axios pero fue en vano.

Si esto es una solución fácil, ¡lo siento! ¡Gracias por tu ayuda!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Porque los datos aún no están cargados.

Suponiendo que su aplicación es algo así como

 function App() { const [data, setData] = React.useState(); const getData = (file) => { fetch(file) .then((res) => res.json()) .then((data) => setData(data)) .catch((err) => console.log("Error fetching data", err)); }; useEffect(() => { getData(filePath); }, [filePath]); return <main>{data[0].country}</main>; }

está comenzando con datos undefined .

Agregue un protector contra eso:

 if(!data) return <>Loading...</>; return <main>{data[0].country}</main>;
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!