在一个组件中,我想使用fetch API从我的数据库中获取一些数据。当获取所有数据时,我想使用Promise.all()来改变组件的状态:
await Promise.all(data).then(
this.setState({
isLoading: false
})
)
我的问题是在解析Promise之前会触发setState()。但是这段代码可以工作,但isLoading是一个数组,而不是boolean:
this.setState({
isLoading: await Promise.all(data)
})
有谁知道为什么?我对React-Native有点新意,所以会喜欢一些输入!
答案 0 :(得分:2)
当您使用async
/ await
时,您根本不应该致电then
。如果您仍想使用它,则需要传递回调;但是你的代码应该简单如下:
await Promise.all(data);
this.setState({
isLoading: false
});
答案 1 :(得分:1)
你应该这样改变:
await Promise.all(data).then((result) => {
this.setState({
isLoading: false
})
}
)
基本上.then
有一个参数函数,因此您必须将setState
放在箭头函数中。
答案 2 :(得分:0)
then(
this.setState(...)
)
您立即调用setState()
并将结果传递给then()
(就像任何其他函数调用一样)。
您需要将函数或lambda传递给调用then()
的{{1}}。