如何在React Native中更新状态并决定更新后的状态

苏尼尔·加格(Sunil Garg)

我在应用程序中使用了Picker组件。屏幕上有列表视图。根据选择器的选定值,列表视图将得到更新。这是代码

<Picker style={{ flex: 0.3, marginTop: -10 }}
  selectedValue={this.state.helpModel.needyType}
  onValueChange={(itemValue, itemIndex) => {
    this.setState((prevState) => {
      return { helpModel: { needyType: itemValue, helpStatus: prevState.helpModel.helpStatus } }
    });
    this.getNeedies(this.state.helpModel);
  }}>
  {this.state.helpCategory.map((data, index) => {
    return (
      <Picker.Item key={data.id} label={data.title} value={data.value} />
    );
  })}
</Picker>

我使用状态变量(this.state.helpModel.needyType)绑定selectedValue选择器的,并在onValueChange更新状态变量。然后根据调用一个方法,该方法this.state.helpModel将获取列表数据并更新列表视图。但是helpModel并没有立即获取更新,因此它会在一段时间内保留先前的值,但是在那个时间中,getNeedies将调用方法并基于先前的值请求数据。

可能是因为setState是异步行为。我在使用getNeedies2-3秒后解决了使用call方法的问题setTimeout但是,有没有更好或更优雅的方法可以做到这一点呢?可能会.thenpromises

我刚刚开始使用React Native,所以请忽略这是否太基础了。

Pir Shukarullah Shah

由于setState以异步方式工作。打完电话后这意味着setStatethis.state不会立即改变。因此,如果要在设置状态后立即执行操作,请使用2nd参数作为on上的回调setState考虑以下示例:

this.setState({
    data: newData
}, () => {
  //TODO: Do something with this.state here
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章