如何更新状态并对本机中的更新状态做出决定

Sun*_*arg 3 javascript state react-native

我在我的应用程序中使用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>
Run Code Online (Sandbox Code Playgroud)

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

可能是因为setState是异步行为.使用getNeedies后用2-3秒钟调用方法解决了这个问题setTimeout.但有没有更好或更优雅的方式来做同样的事情?可能会.thenpromises

我刚开始使用React Native,所以如果这个问题太基础,请忽略.

Pir*_*hah 7

因为setState以异步方式工作.打完电话后这意味着setStatethis.state不会立即改变.因此,如果要在设置状态后立即执行操作,请使用第二个参数作为回调setState.考虑这个例子:

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