es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El valor del estado del componente de clase de React no se está actualizando.

Soy nuevo en react js. Estoy aprendiendo creando una aplicación simple. Intenté crear una aplicación simple para el clima utilizando un componente de clase react. Todo funciona bien, pero el resultado almacenado en una variable de estado no se imprime en la plantilla. Puedo ver la respuesta de la API en la consola y luego almacenar el resultado en la variable de estado ‘currWeatherRes’ que no se muestra en la plantilla (La ubicación siempre está en blanco)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la respuesta de la API fetch no está en formato JSON, por lo que no se puede acceder directamente a los datos utilizando la notación de punto como lo harías con un objeto JSON. Necesitas convertir primero la respuesta a JSON utilizando el método .json() antes de acceder a los datos.

    Para solucionar esto, modifica el método handleSubmit de la siguiente manera:

    handleSubmit = (event) => {
      event.preventDefault();
      alert(`El nombre que ingresaste fue:`+ this.state.cityName);
    
      fetch(`https://api.openweathermap.org/data/2.5/weather?q=`+this.state.cityName+`&appid=f3ee66722740d00cc6f197cbcab3d534`, {
        method: 'GET'
      })
        .then((response) => response.json())
        .then((data) => {
          console.log(data)
          this.setState({
            currWeatherRes: data
          })
        });
    }
    

    Aquí, hemos agregado un método .json() a la respuesta y luego encadenado un segundo método .then() para acceder a los datos en la respuesta. Los datos se almacenan en la variable de estado currWeatherRes como un objeto JSON, que se puede acceder utilizando la notación de punto en la plantilla.

    Esperemos que esto solucione el problema de no mostrar los datos climáticos en la aplicación.

Comments are closed.