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

280
Views
TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'común')
 import React, { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; const CountryDetail = () => { const {countryname}=useParams(); const[countrydet,setCountry]=useState([]); useEffect(()=>{ const url=`https://restcountries.com/v3.1/name/${countryname}`; fetch(url) .then(res=>res.json()) .then(data=>setCountry(data)) },[]) return ( <div style={{textAlign: 'center'}}> <h3>This is country details : {countryname}</h3> <h4>{countrydet.name.common}</h4> <h4>{countrydet.continents}</h4> </div> ); };

exportar por defecto CountryDetail;

pero hay un elemento en el objeto {"name":{"common":"Bangladesh","official":"República Popular de Bangladesh","nativeName":{"ben":{"official":"বাংলাদেশ গণপ্রজাতন্ত্রী" ,"común":"বাংলাদেশ"}}}

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

0

Cuando el componente se representa por primera vez, la llamada a la API asincrónica y la configuración del estado aún no se han realizado, por lo que countrydet no está definido.

 <h3>This is country details : {countryname}</h3> <h4>{countrydet?.name?.common}</h4> <h4>{countrydet?.continents}</h4>

Esto debería funcionar, y aquí está la referencia de MDN para el encadenamiento opcional .

o alternativamente, podría envolver todo el bloque en un condicional, algo como esto:

 <h3>This is country details : {countryname}</h3> { countrydet?.name?.common && countrydet?.continent ? <> <h4>{countrydet?.name?.common}</h4> <h4>{countrydet?.continents}</h4> </> : <></> }
about 4 years ago · Juan Pablo Isaza Report

0

  • En primer lugar, establezca un estado inicial para countrydet .
  • Luego, desenvuelva correctamente la respuesta de la solicitud de recuperación. .then(([data]) => setCountry(data));
  • Compruebe si el countryname de nombre de país está configurado antes de ejecutar la solicitud de recuperación.
  • Compruebe si countrydet está definido antes de intentar acceder a sus propiedades.

 const CountryDetail = () => { const { countryname } = useParams(); const [countrydet, setCountry] = useState(undefined); useEffect(() => { if (countryname) { const url = `https://restcountries.com/v3.1/name/${countryname}`; fetch(url) .then((res) => res.json()) .then(([data]) => setCountry(data)); } }, [countryname]); return ( <div style={{ textAlign: "center" }}> <h3>This is country details : {countryname}</h3> {countrydet && ( <> <h4>{countrydet.name.common}</h4> <h4>{countrydet.continents}</h4> </> )} </div> ); };

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!