У меня есть этот метод удаления, который отлично работает, но он не удаляет элементы из списка динамически, а требует, чтобы я перезагрузил страницу, чтобы увидеть результаты.
deleteRevision = (id) => {
alert("Are you sure you want to delete {revisionID} ?")
console.info(id)
axios.delete("http://localhost:8080/lagbevakning/revision/delete?id = " + id)
}
finishedRevisionsList = () => {
return(
<div>
<Table celled>
<Table.Header>
<Table.Row>
<Table.HeaderCell> Status </Table.HeaderCell>
<Table.HeaderCell> Skapad </Table.HeaderCell>
</Table.Row>
</Table.Header>
{this.state.data.map((item, i) => (
<Table.Body key = {item.id}>
<Table.Row>
<Table.Cell>{item.status}</Table.Cell>
<Table.Cell>
<i className = "far fa-trash-alt" onClick = {this.deleteRevision.bind(this, item.id)}></i>
</Table.Cell>
</Table.Row>
</Table.Body>
))}
</Table>
</div>
)
}
render() {
return (
<div>
{this.finishedRevisionsList()}
</div>
)
}
Любые предложения о том, как я могу сделать эту таблицу более динамичной?
Ваш метод deleteRevision
просто отправляет запрос DELETE
на серверную часть, но не обновляет состояние компонента.
Вы можете отфильтровать товар с указанным id
из data
.
deleteRevision = id => {
axios.delete("http://localhost:8080/lagbevakning/revision/delete?id = " + id);
this.setState(({ data }) => ({
data: data.filter(item => item.id !== id)
}));
}
Вы должны изменить свой массив данных в состоянии после удаления.
Вы удаляете элемент из this.state.data
, после чего вы должны установить новые данные в состояние (без удаленного элемента)
что-то вроде:
this.setStete((prevState) => {
data: prevState.data.filter(item => item.id !== id);
);