在我的React应用程序中,我使用回调来使用axios库对API执行删除操作:
deleteBook(selectedBook) {
return this.setState({selectedBook:selectedBook})
axios.delete(this.apiBooks + '/' + this.selectedBook.id)
.then((res) => {
console.log(res)
})
}
我在控制台中收到一条错误消息:"无法访问的代码"。我认为我的语法错了。我想执行两个动作:
1)设置selectedBook的状态。
2)使用Axios库删除方法删除书籍项目。
答案 0 :(得分:2)
摆脱回归。您不希望在此时从您的函数返回。你只需要this.setState(...)。这就是为什么你得到'无法访问的代码',因为返回下的任何内容都不会执行。
此外,我会在axios成功返回后执行setState()。如果axios失败,您可能不希望这样做,因为如果删除失败,您的本地状态将不会反映正在发生的事情。 setState()也会导致重新呈现组件,因此最好在API调用完成后再执行此操作。
答案 1 :(得分:1)
你不需要return
。因为您的函数包含promise(axios)如果您想知道axios请求何时完成,您可以发出回调。
deleteBook(selectedBook) {
const self = this
axios.delete(this.apiBooks + '/' + this.selectedBook.id).then((res) => {
console.log(res)
// we can update the state after response...
self.setState({selectedBook:selectedBook})
})
}