При нажатии на кнопку код через ajax достает данные в бд и выводит их через цикл. Но создается лишь один блок с последней записью. Не понимаю почему это так работает, ведь данные точно все туда поступают.
Принимаемые данные:
- ['1', 'Pavel', '1000.25', '2021-10-07']
- ['2', 'Anton', '5541', '2021-10-30']
- ['3', 'VVV', '1000', '2021-10-14']
// В другом файле
const Article = (props) => {
return (
<div>
<h1>Статья</h1>
{props.name}
</div>
);
};
function App() {
const [article, setArticle] = useState([]);
function clickHandler () {
fetch("http://192.168.1.50/text.php", {
method : "POST",
header : {
'Content-Type' : 'application/x-www-form-urlencoded; charset=utf-8',
},
body : JSON.stringify({ action : 1 })
})
.then (response => response.json())
.then (response => {
createArticle(response);
})
};
const createArticle = (element) =>{
element.forEach(el => {
setArticle(article.concat( <Article name={el[1]} key={article.length} /> ))
});
};
return (
<div className="App container my-3">
<section>
{article}
</section>
<button className="btn btn-success" onClick={clickHandler}>Получить данные</button>
</div>
);
};