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

191
Vistas
No se pueden obtener datos de la matriz de objetos | React.js - openweatherAPI

Obtengo datos de openweatherAPI usando el kit de herramientas react-redux. Puedo obtener el nombre pero cuando quiero obtener main.temp da un error

typeError: no se pueden leer las propiedades de undefined (leyendo 'temp')

 export const fetchDefault = createAsyncThunk('weather/getWeather', async (selectedCity) => { const res = await axios(`https://api.openweathermap.org/data/2.5/weather?q=${selectedCity}&appid=6d735f036884219e3a12eeb6f7bf6f93`) return res.data});

ExtraReductores

 [fetchDefault.fulfilled]: (state , action) => { state.item = action.payload; console.log(state.item) },

Funciona si return res.data.main pero esta vez no puedo obtener el nombre.

índice.js

 const getCity = useSelector((state) => state.weather.item); {getCity.main.temp} // Gives Error..

La matriz se ve así ...

 { "weather": [ { "id": 802, "main": "Clouds", "description": "scattered clouds", } ], "main": { "temp": 300.15, "pressure": 1007, "humidity": 74, "temp_min": 300.15, "temp_max": 300.15 }, "wind": { "speed": 3.6, "deg": 160 "id": 2172797, "name": "Cairns", "cod": 200 }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su reductor guarda action.payload en state.item , por lo que creo que useSelector debería devolver state.item.name para getCity (suponiendo que desea acceder al nombre de la ciudad con ese selector).

Alternativamente, puede crear un selector para state.item y acceder a todo a través de eso.

Por cierto, su reductor debería devolver un valor, por lo que suponiendo que el estado era un objeto inicialmente, debería verse así:

 [fetchDefault.fulfilled]: (state , action) => { return {...state, item: action.payload} },
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