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

218
Vistas
TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'nombre') - ReactJS
import Info from "./components/Info"; import Search from "./components/Search"; import axios from "axios"; import { useEffect, useState } from "react"; const App = () => { const API_KEY = `<REDACTED>` const baseURL = `http://api.weatherapi.com/v1/current.json?key=${API_KEY}&q=` const [weatherData, setWeatherData] = useState({}) const [search, setSearch] = useState('London') const [error, setError] = useState('') useEffect(() => { axios.get(`${baseURL + search}`) .then(resp => { setWeatherData(resp.data) }) .catch(error => setError(error.message)) }, [search]) console.log(weatherData.location.name); return ( <div className="App"> <h1 style={{ textAlign: 'center', marginBottom: '2rem' }}>{error}</h1> <Search setSearch={setSearch} /> <div className="container"> <Info weatherData={weatherData} /> </div> </div> ); } export default App;

Estoy tratando de crear una aplicación meteorológica en reaccionar. Estoy usando la API meteorológica que puedes ver en el código (tal vez también deberías echarle un vistazo a la estructura de la API). Cuando registro en la consola weatherData.location , obtengo los datos meteorológicos normales. Pero cuando pruebo weatherData.location.name me sale el error que dice: Uncaught TypeError: Cannot read properties of undefined (reading 'name') . Empecé a aprender React hace dos semanas, así que todavía soy un principiante... Gracias.

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

0

Esto ocurre cuando la API aún no ha enviado una respuesta y los datos meteorológicos aún están vacíos. Recomiendo agregar un estado [loading,setLoading] y configurarlo como verdadero de forma predeterminada. Luego configúrelo como falso en la .then(resp => . Haga una declaración if para verificar si la carga es falsa, y si es así, imprima/renderice el contenido de weatherData.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe agregar el operador ternery en el archivo console.log

como console.log(weatherData? ubicación ? .name) o puede probar console.log(weatherData && weatherData.ubicación && weatherDataname.ubicación.nombre)

está sucediendo porque en el estado inicial no puede leer el valor del nombre porque probablemente es una cadena vacía.

prueba este método.

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