我有这个删除方法,效果很好,但是它不能动态地从列表中删除项目,但是需要我重新加载页面才能看到结果。
deleteRevision = (id) => {
alert("Are you sure you want to delete {revisionID} ?")
console.log(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>
)
}
关于如何使此表更具动态性的任何建议?
答案 0 :(得分:4)
您的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)
}));
}
答案 1 :(得分:0)
删除后,您应该更改数据阵列的状态。
答案 2 :(得分:0)
从this.state.data
中删除元素之后,必须将新数据设置为state(没有删除的元素)
类似的东西
this.setStete((prevState) => {
data: prevState.data.filter(item => item.id !== id);
);