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

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

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 Report

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 Report

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 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!