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

174
Vistas
causa de TypeError: no se pueden leer las propiedades de undefined

Estoy tratando de obtener algunos datos de una API. El siguiente código "funciona" cuando registro los resultados en la consola como console.log(liveInfo.tracks) , pero cuando intento hacer console.log(liveInfo.tracks.current) falla con este error: TypeError: Cannot read properties of undefined (reading 'current') . ¿No es liveInfo.tracks.current cómo se accedería normalmente al par clave-valor?

 componentDidMount() { fetch('https://kchungradio.airtime.pro/api/live-info-v2') .then(res => res.json()) .then( (result) => { this.setState({ isLoaded: true, liveInfo: result }) } ) }

El json se ve más o menos así:

 { "station": { "env": "production", }, "tracks": { "previous": { "name": "a", "metadata": { "id": 1, }, }, "current": { "name": "b", "metadata": { "id": 2, } } } }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Porque en algún momento liveInfo.tracks no estaba undefined

Aunque faltan sugerencias, un error común al obtener datos del ciclo de vida es intentar recuperar el valor a través del estado antes de que se produzca setData.
Antes de usar liveInfo , asegúrese de que la obtención de datos haya finalizado.

como esto

 class SomeComponent = { render() { if(!this.state.liveInfo?.tracks?.current) return null .... } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que está intentando acceder a la current antes de que se llene en el componentDidMount , lo que significa que antes de que se haya realizado la recuperación. Te sugiero que inicialices el estado de esta manera:

 state = { isLoaded: false, liveInfo: { tracks: { curent: {} } } };

Por lo tanto, podrá acceder a la propiedad current dentro de tracks sin enfrentar el TypeError . Hice un codesandbox, así que puedes ver un ejemplo allí.

Si esto no resuelve su problema, hágamelo saber;)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su llamada parece correcta, otra forma de obtener el valor es console.log(liveInfo.tracks["current"]);

pero creo que tus pistas no tienen valor en tiempo de ejecución. Tal vez pueda mostrarnos más código donde está llamando a console.log.

Tal vez ejecuta dos veces en su declaración y la primera vez no está definida y arroja el error. Así que agregue una verificación nula como esta console.log(liveInfo?.tracks?.current);

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