Добрый вечер.
Полдня долблюсь с тем, чтобы записать результат запроса в состояние React.
Весь код:
import React, { Component } from "react";
import ReactDOM from "react-dom";
import axios from "axios";
export default class AllCalcs extends Component {
constructor (props) {
super(props);
this.state = {
calcs: []
};
this.listItems = '';
this.fetchData();
this.getCalcs();
}
fetchData() {
axios.post('/api/all-calcs')
.then(response => this.setState({calcs: response.data}))
.catch(error => console.log(error));
}
getCalcs() {
this.listItems = this.state.calcs.map((calc, index) =>
<a key={index} href="#" className="list-group-item list-group-item-action flex-column align-items-start">
<div className="d-flex w-100 justify-content-between">
<h5 className="mb-1">{calc.h1}</h5>
<small>3 days ago</small>
</div>
<p className="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget
risus varius blandit.</p>
<small>Donec id elit non mi porta.</small>
</a>
);
}
render() {
return (
<div>
<div className="list-group">
{this.listItems}
</div>
</div>
);
}
}
if (document.querySelector('#all-calcs')) {
ReactDOM.render(<AllCalcs />, document.querySelector('#all-calcs'));
}
Уверен, опытный разработчик за секунду поймет в чем проблема и подскажет. Смысл в том, что по /api/all-calcs мы получаем массив с постами. Их нужно записать в this.state.calcs, чтобы можно было использовать в методе getCalcs.
Помогите, пожалуйста, разобраться что не так делаю.