【发布时间】:2018-08-19 08:18:16
【问题描述】:
虽然在使用当前状态时建议使用函数 setState(),但该函数仍然不能异步。我们如何开发一个使用状态、调用 REST API 并立即更改状态的函数?
这是原始函数,它忽略了 setState 的异步行为。
onSortColumnChanged = (sortColumn) => async (event) => {
const prev = this.state;
const searchParams = { ...prev.params, sortColumn: sortColumn };
const result = await this.callSearch(searchParams);
this.setState({ params: searchParams, result: result });
}
如果我们把上面的函数改成使用函数式 setState,VSCode 会抱怨 await 只能用在异步函数中。
onSortColumnChanged = (sortColumn) => (event) => {
this.setState((prev) => {
const searchParams = { ...prev.params, sortColumn: sortColumn };
const result = await this.callSearch(searchParams);
return { params: searchParams, result: result };
});
}
我想我在这里遗漏了一些基本的东西。
【问题讨论】:
-
我想你只需要把
this.setState((prev) => {改成this.setState(async (prev) => { -
@Tony
setState不会解决承诺
标签: reactjs async-await setstate