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

418
Vistas
React-Axios => No se pueden leer las propiedades de undefined (leyendo 'longitud')

Estoy tratando de recuperar algunos datos de una API. Cuando consuelo los datos funciona bien:

 import axios from 'axios'; export default function Model() { const url = "api.blabla.com/blabla" const [model, setModel] = useState() useEffect(() => { const axiosPosts = async () => { const response = await axios(url) setModel(response.data) }; axiosPosts(); }, []); console.log(model.slug) //prints the slug!! return ( <div> {model.slug} : {model.name} // TypeError slug undefined </div> )

¿Cuál puede ser el problema con este código?

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

0

La API tarda un tiempo en responder, por lo que al inicio se le asigna al model el valor del parámetro que pasó al gancho useState() .

No pasó nada, por lo que durante la primera reacción, el model de renderizado no está definido.

Una solución podría ser cambiar su plantilla a:

 {model?.slug} : {model?.name}

O hacerlo condicional

 {model && ( <> {model.slug} : {model.name} </> )}
about 4 years ago · Juan Pablo Isaza Denunciar

0

agregando más a la respuesta anterior de @ploppy, un patrón común aquí sería

 import axios from 'axios'; export default function Model() { const url = "api.blabla.com/blabla" const [status, setStatus] = useState("idle"); const [model, setModel] = useState({ slug: "", name: "" }) useEffect(() => { setStatus("pending"); const axiosPosts = async () => { try{ const response = await axios(url) setModel(response.data) setStatus("resolved") }catch(error){ console.log(error); setStatus("rejected"); } }; axiosPosts(); }, []); console.log(model.slug) //prints the slug!! if(status === "pending"){ return (<div>Loading...</div>) } if(status === "rejected"){ return (<div>Something went wrong!</div>) } return ( <div> {model.slug} : {model.name} // TypeError slug undefined </div> )

Esto le brinda una buena ventaja para manejar mejor las llamadas API y sus respuestas.

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