2017-05-28 63 views
0

在我作出反应的应用程序的反应,我使用的是回调使用Axios公司库执行针对API删除操作:删除操作使用爱可信

deleteBook(selectedBook) { 
    return this.setState({selectedBook:selectedBook}) 
    axios.delete(this.apiBooks + '/' + this.selectedBook.id) 
    .then((res) => { 
     console.log(res) 
    }) 
    } 

我在控制台中的错误信息:“无法访问码”。我认为我的语法错了。我想执行2个操作:

1)设置selectedBook的状态。

2)使用Axios库删除方法删除书籍项目。

回答

1

摆脱回报。你不想在那时返回你的功能。你只需要this.setState(...)。这就是为什么你得到'无法访问的代码',因为没有在回报下执行。

另外,我会在axios成功返回后执行setState()。如果axios失败,您可能不希望这样做,因为如果删除失败,您的本地状态将不会反映正在进行的操作。 setState()也会导致组件的重新渲染,所以最好在API调用完成后再做。

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