Я пытаюсь получить некоторые данные JSON с URL-адреса.Затем я устанавливаю свое состояние как часть этих данных.
В моем методе рендеринга я хотел бы отобразить эти данные, используя map()
.Стоит столкнуться с тем, что, поскольку для извлечения данных требуется некоторое время, состояние все еще устанавливается равным нулю, когда он пытается его отобразить.
Другая проблема, с которой я сталкиваюсь, заключается в том, что моя функция getData () кажетсяогонь несколько раз каждые несколько секунд.Если я добавляю консольный журнал в конце, он регистрирует его снова и снова.
Кто-нибудь сможет дать мне знать, если увидит, что я что-то делаю не так?
Мой код такойследует:
getData = () => {
let _this = this
fetch('https://my-data-link.com')
.then(
response => {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
return;
}
// Examine the text in the response
response.json().then(
data => {
_this.setState({data: data.searchResults.filter(d => d.salesInfo.pricing.monthlyPayment <= _this.state.monthlyMax)})
}
);
}
)
.catch(function(err) {
console.log('Fetch Error :-S', err);
});
// Adding a console log here is when I noticed that the code keeps firing.
}
renderData = () => {
let vehicles = "Loading..."
let _this = this
this.getData()
setTimeout(function(){
vehicles = _this.state.data.map(vehicle => (
<h1>{vehicle.make}</h1>
))
return vehicles
}, 6000);
return vehicles
}
render() {
return (
{this.state.formSubmitted > 0 &&
<div>
<h3 className="ch-mt--4">Recommended vehicles</h3>
{this.renderData()}
</div>
}
)
}