2017-05-28 93 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}) 
    }) 
}