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

133
Vistas
En React, ¿cómo puedo hacer una sola llamada a la API, establecer el resultado en una variable de estado y mostrarlo?

Estoy programando una aplicación de reacción donde necesito hacer una sola llamada api asíncrona, guardar el resultado en una variable de estado y mostrar el resultado. Estoy usando una instancia de axios donde la respuesta de la llamada api es un objeto anidado. Por ejemplo:

 { kanji: {character: "", stroke:""}, quote: "string" }

Hasta ahora tengo el siguiente código donde puedo consolar. registrar el objeto homeData con éxito. Sin embargo, aparece el error: 'TypeError: homeData is undefined'.

 const Home = () =>{ const [homeData, setHomeData] = useState({}) const getHomeData = async()=>{ instance.get("/data") .then(res =>{ setHomeData(res.data) }) .catch(error =>{ console.log(error) }) } useEffect(()=>{ getHomeData() }, []) console.log(homeData) return( <> <p>{homeData}<p> </> ) }

Esto parece un problema de promesa, pero no estoy seguro de cómo solucionarlo. De forma anticipada, muchas gracias por su ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Este no es un problema de promesa, tiene que ver con el orden en que se ejecutan los métodos del ciclo de vida. useEffect se ejecuta después de que se procesa el componente. Esto significa que cuando el componente se procesa por primera vez, homeData es un objeto vacío. homeData estará presente en el segundo render. El siguiente código primero verifica si homeData existe, luego, si existe, muestra el carácter kanji. Tenga en cuenta también que no puede simplemente mostrar un objeto sin procesar en el dom, por lo que tendrá que acceder a homeData por propiedad para que se muestre

 const Home = () =>{ const [homeData, setHomeData] = useState({}) const getHomeData = async()=>{ instance.get("/data") .then(res =>{ setHomeData(res.data) }) .catch(error =>{ console.log(error) }) } useEffect(()=>{ getHomeData() }, []) console.log(homeData) return( <> <p>{homeData && homeData.kanji.character}<p> </> ) }
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