我有一个句柄删除,它向服务发出请求。
handleDelete = async studentId => {
try {
await axios.delete(`/students/${studentId}`).then(() =>
this.setState({
students: this.state.students.filter(
student => student._id !== studentId
),
})
)
} catch (e) {
console.log(`Error: ${e}`)
}
}
当我提交axios.delete
而只是致电this.setState
时,它会像我想要的那样过滤。
为什么我不能强迫用新数据重新登记状态?
编辑:这是我在后端删除的功能。
exports.deleteStudent = async (req, res) => {
try {
await Student.findByIdAndRemove(req.params.studentId)
res.status(204)
} catch (e) {
console.log(`Error: ${e}`)
}
}
答案 0 :(得分:1)
由于您使用async-await
,因此需要解决承诺。还可以使用functional setState
。
handleDelete = async studentId => {
try {
await axios.delete(`/students/${studentId}`)
this.setState(prevState => ({
students: prevState.students.filter(
student => student._id !== studentId
)
}))
} catch (e) {
console.log(`Error: ${e}`)
}
}
有关sprintf
的详细信息,请查看此处