Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
Estado no actualizado después de una solicitud AJAX exitosa

Estoy haciendo una aplicación React básica con datos provenientes de mi API. Pero el estado no se actualiza cuando hago this.setState({}) después del éxito de AJAX. El state.events está vacío en el método de render .

¿Qué estoy haciendo mal?

 import React, {PropTypes, Component} from 'react'; import axios from 'axios'; import './App.css'; class App extends Component { constructor(props) { super(props); this.state = { events: [] }; } componentDidMount() { axios.get('http://localhost:4000/api/v1/events') .then(function (response) { this.setState({events: response.data}); }) .catch(function (error) { console.warn(error); }); } render() { // this.state.events keeps being an empty array [] return ( <div className="home"> { this.state.events.map((month) => { console.log(month) }) } </div> ); } } export default App;
about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La forma que está utilizando debería arrojar el error, verifique la console . Debe bind el contexto para usar this palabra clave dentro del método de devolución de llamada que está usando en .then , use esto:

 componentDidMount() { axios.get('http://localhost:4000/api/v1/events') .then( response => { console.log('data', response.data); this.setState({events: response.data}); }) .catch(function (error) { console.warn(error); }); }

o use .bind(this) para vincular el contexto, así:

 componentDidMount() { axios.get('http://localhost:4000/api/v1/events') .then(function (response) { this.setState({events: response.data}); }.bind(this)) .catch(function (error) { console.warn(error); }); }
about 4 years ago · Santiago Trujillo Relatório

0

Debe vincular la función de éxito de axios al contexto correcto para hacer uso de setState. Utilizar este

 componentDidMount() { axios.get('http://localhost:4000/api/v1/events') .then(function (response) { this.setState({events: response.data}); },bind(this)) .catch(function (error) { console.warn(error); }); }
about 4 years ago · Santiago Trujillo Relatório

0

this

la devolución de llamada interna no se refiere al contexto de su componente, por lo que necesita vincular su función de devolución de llamada de axios con su componente de reacción para actualizar el estado de ese componente

 import React, {PropTypes, Component} from 'react'; import axios from 'axios'; import './App.css'; class App extends Component { constructor(props) { super(props); this.state = { events: [] }; } componentDidMount() { axios.get('http://localhost:4000/api/v1/events') .then(function (response) { this.setState({events: response.data}); }.bind(this)) // binding of callback to component .catch(function (error) { console.warn(error); }); } render() { // this.state.events keeps being an empty array [] return ( <div className="home"> { this.state.events.map((month) => { console.log(month) }) } </div> ); }

}

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda