Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!