Promise.all() 和 setState() 反应原生

Axe*_*Sun 3 javascript promise setstate react-native

在组件中,我想使用 fetch API 从数据库中获取一些数据。当获取所有数据时,我想使用 Promise.all() 更改组件的状态:

await Promise.all(data).then(
  this.setState({
    isLoading: false
  })
)
Run Code Online (Sandbox Code Playgroud)

我的问题是 setState() 在 Promise 解决之前触发。然而,这段代码可以工作,但 isLoading 是一个数组而不是布尔值:

this.setState({
  isLoading: await Promise.all(data)
})
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?我对 React-Native 有点陌生,所以希望得到一些意见!

Mar*_*ssa 5

你应该这样改变:

await Promise.all(data).then((result) => {
   this.setState({
     isLoading: false
   })
 }
)
Run Code Online (Sandbox Code Playgroud)

基本上.then有一个函数作为参数,因此您必须将其放入setState箭头函数中。