(DUDA) Peticiones HTTP en React


Estado
Cerrado para nuevas respuestas.

hostyn96

Miembro muy activo
Noder
Buenas, hace poco he empezado a aprender a programar en React y me ha surgido un problema que me esta volviendo un poco loco. Mi problema es el siguiente:
Yo hago una petición http a un api (con axios en este caso pero con request y fetch me pasa lo mismo) y recibo dos respuestas.

Código:
import logo from './logo.svg';
import './App.css';
import axios from 'axios';


function App() {
  axios.get('http://worldtimeapi.org/api/timezone/Europe/Madrid')
    .then(response => {
      console.log(response.data);
    })

  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

Captura5.PNG


He probado a poner un console.log justo antes de la petición para ver si se ejecutaba dos veces y era que estaba haciendo dos peticiones pero no. Estoy usando React en su ultima versión 17.0.1
He probado de todo pero no encuentro el problema, seguramente sea una tontearía pero no la veo, gracias de antemano.
 

cbrn

el ex-staff más guapo del foro
Noderador
Nodero
Noder
Seguro que no estás haciendo dos peticiones? No has llamado a la misma clase dos veces en el index.js por ejemplo? Revisa si en el documento root de la aplicación tienes alguna otra llamada a esa misma clase de React

Edit:
JavaScript:
import logo from './logo.svg';

import './App.css';

import axios from 'axios';

function App() {
 
    fetchAPI(){

      axios.get('http://worldtimeapi.org/api/timezone/Europe/Madrid')

        .then(response => {

            console.log(response.data);

        })

    }

    componentDidMount = async() => {
      await this.fetchAPI();
    }

  return (
    <div className="App">

      <header className="App-header">

        <img src={logo} className="App-logo" alt="logo" />



        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>

        <a
          className="App-link"

          href="https://reactjs.org"

          target="_blank"

          rel="noopener noreferrer"

        >
          Learn React
        </a>

      </header>

    </div>
  );

}





export default App;
Te he hecho esto a ver si no te da ese fallo. Pruébalo y me comentas (no lo he testeado, ahora mismo no puedo)
 
Última edición:

hostyn96

Miembro muy activo
Noder
Seguro que no estás haciendo dos peticiones? No has llamado a la misma clase dos veces en el index.js por ejemplo? Revisa si en el documento root de la aplicación tienes alguna otra llamada a esa misma clase de React

Edit:
JavaScript:
import logo from './logo.svg';

import './App.css';

import axios from 'axios';

function App() {

    fetchAPI(){

      axios.get('http://worldtimeapi.org/api/timezone/Europe/Madrid')

        .then(response => {

            console.log(response.data);

        })

    }

    componentDidMount = async() => {
      await this.fetchAPI();
    }

  return (
    <div className="App">

      <header className="App-header">

        <img src={logo} className="App-logo" alt="logo" />



        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>

        <a
          className="App-link"

          href="https://reactjs.org"

          target="_blank"

          rel="noopener noreferrer"

        >
          Learn React
        </a>

      </header>

    </div>
  );

}





export default App;
Te he hecho esto a ver si no te da ese fallo. Pruébalo y me comentas (no lo he testeado, ahora mismo no puedo)
Creo que no estoy haciendo dos peticiones, porque como ya dije si pongo un console.log justo entes de la petición ese console.log solo se ejecuta una vez pero obtengo dos respuestas. He revisado el index.js pero esta por defecto, así que no creo que sea eso.
Y en cuanto al código que me adjuntas, ya probé el componentDidMount pero me dice que no está definido, creo que en la ultima versión lo han quitado o no se.
Supongo que la mejor opción será probar con una versión anterior de react.
Gracias de todas formas.
 
  • Like
Reacciones : cbrn

hostyn96

Miembro muy activo
Noder
Efectivamente con la versión 16.14.0 de react usando exactamente el mismo código que puse al principio solo obtengo una respuesta, supongo que será un error de react o algo no se pero bueno problema resuelto.
 
  • Like
Reacciones : cbrn
Estado
Cerrado para nuevas respuestas.