使用axios删除动作

时间:2017-05-28 17:30:57

标签: javascript reactjs axios

在我的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库删除方法删除书籍项目。

2 个答案:

答案 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})
  })
}