在等待反应之后初始化状态
问题描述:
我有一个向服务器发送数据的异步提交功能。现在我想每当提交用户停留此页面,但状态恢复到初始形式。 这里是我的代码:在等待反应之后初始化状态
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方法将不会从服务器更新数据。