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

250
Vistas
Construyendo el primer componente/aplicación de React, problemas con axios que devuelven respuestas duplicadas

aquí está mi componente de reacción

 import './App.css'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faQuoteLeft } from '@fortawesome/free-solid-svg-icons'; import { faTwitter } from '@fortawesome/free-brands-svg-icons'; import React from 'react'; import axios from 'axios'; const quoteIcon = <FontAwesomeIcon icon={faQuoteLeft} />; const twitterIcon = <FontAwesomeIcon icon={faTwitter} />; class App extends React.Component { state = { quote: '' }; componentDidMount(){ this.fetchQuote(); } fetchQuote = () => { axios.get("https://api.quotable.io/random") .then((response)=>{ const {quote} = response.data.content; this.setState({ quote }); }) .catch(error => console.log(error)); } render() { const { quote } = this.state; return ( <div id='wrapper'> <div id='quote-box'> <div className='quote-text'> <div id='quoteIcon'>{quoteIcon}</div><span id='text'>{this.state.quote}</span> </div> <div className='quote-author'>-<span id='author'></span></div> <div className='buttons'> <a href="link" className='button' id='tweet-quote'>{twitterIcon}</a> <button className='button' id='new-quote' onClick={this.fetchQuote}>New quote</button> </div> </div> </div> ); } } export default App;

No puedo hacer que la cotización se muestre en la pantalla. Traté de consola. registrar lo que estaba sucediendo después de recibir mi respuesta con axios y, por alguna razón, sigo recibiendo dos llamadas. Obtengo dos cotizaciones diferentes registradas. No estoy seguro de si es por eso que tengo problemas para renderizarlo.

Intenté usar otros métodos como buscar y aún obtengo respuestas duplicadas. ¿Estoy pensando que mi componenteDidMount() se está montando varias veces por alguna razón? pero no sé por qué haría eso. Pero lo necesito para cargar mi función cuando el componente se monta, así que no quiero dejar de usarlo. Cuando me deshago de él, obviamente no ejecuta mi función, pero creo que aún recibe respuestas dobles.

ingrese la descripción de la imagen aquí

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

0

tus datos son: response.data {_id: "UBum36vM5", tags: Array(1), content: "Remember that a gesture of friendship, no matter how small, is always appreciated.", author: "H. Jackson Brown Jr.", authorSlug: "h-jackson-brown-jr"…}

Pero tú (Desestructurando "cita") lo que no existe.

const {quote} = response.data.content; const quote = response.data.content;

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que mientras se está desestructurando dentro de la función fetchQuote

En lugar de esto > const {quote}=response.data.current

puede reemplazarlo con > const quote=response.data.current

No existe nada parecido a una cotización en response.data.current Es por eso que su cotización no se establece.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si bien todavía está registrando dos cotizaciones por alguna razón, creo que el problema de que no se mostrara en la pantalla era cómo estaba configurando el estado.

Hice

 this.setState({ quote: response.data.content });
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