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

285
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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