我有一個向服務器發送數據的異步提交功能。現在我想每當提交用戶停留此頁面,但狀態恢復到初始形式。 這裏是我的代碼:在等待反應之後初始化狀態
save = async() => {
....
await rest.post('some_where', {data})
// here
// this.setState({cart: [], selectedItems: []});
}
我想正好發送請求休息狀態後,重新初始化;不是在此之前。 我該怎麼做?
我有一個向服務器發送數據的異步提交功能。現在我想每當提交用戶停留此頁面,但狀態恢復到初始形式。 這裏是我的代碼:在等待反應之後初始化狀態
save = async() => {
....
await rest.post('some_where', {data})
// here
// this.setState({cart: [], selectedItems: []});
}
我想正好發送請求休息狀態後,重新初始化;不是在此之前。 我該怎麼做?
您是否嘗試過使用then()
Promise方法?
then()
方法返回一個Promise。它最多需要兩個參數:Promise的成功和失敗情況的回調函數。
這意味着你可以這樣做:
save = async() => {
....
await rest.post('some_where', {data}).then(() => {
this.setState({cart: [], selectedItems: []});
});
}
如果出現南,你的承諾失敗,你可以做的另一套邏輯。或許,這顯示在你的UI:
save = async() => {
....
await rest.post('some_where', {data}).then(() => {
this.setState({cart: [], selectedItems: []});
},() => {
console.error("Post failed!");
this.setState({didFail: true});
});
}
後調用返回一個承諾,你需要添加一個解析器回調,然後你可以調用的setState({})方法。在你的情況下,setState方法將不會從服務器更新數據。