Начинающий реагировать и JavaScript, так что простите меня, если это простое исправление.
Я получаю данные с сервера и намереваюсь проанализировать ответ и сохранить элементы ответа в массиве который является переменной состояния, так как я хочу использовать варианты состояния для соответствующего обновления страницы.
Проблема, с которой я столкнулся, заключается в том, что при использовании fetch () я могу получить данные с сервера , но, видимо, я не могу правильно использовать setState () для присвоения данных переменной. Я читал, что setState () является асинхронным, поэтому ваша переменная состояния может быть обновлена не сразу, и в этом случае мне интересно, могу ли я отображать приложение всякий раз, когда обновляется моя переменная состояния (массив).
Ниже мой код:
import React, { Component } from 'react';
import './App.css';
class App extends Component{
constructor(props) {
super(props);
this.state = {
apiResponse: []
};
this.getData = this.getData.bind(this);
}
componentDidMount() {
this.getData();
}
getData = () => {
fetch('http://localhost:5000')
.then(results => results.json())
.then(console.log)
.then(results => this.setState({apiResponse: results}, () => {
console.log('data in state', this.state.apiResponse)
}))
.catch(err => console.error(err));
}
render() {
return (
<div className="App">
<h1>Display</h1>
<h1>{this.state.apiResponse}</h1>
<h1>Does this work?</h1>
</div>
);
}
}
export default App;
Первый console.log, который я запускаю после fetch, возвращает соответствующий объект JSON, однако следующий console.log после возвращает undefined, а {this.state.apiResponse}
не отображает что угодно.