Javascript 如何在react native中更新状态并决定更新的状态

Javascript 如何在react native中更新状态并决定更新的状态,javascript,react-native,state,Javascript,React Native,State,我正在应用程序中使用选择器组件。屏幕上有列表视图。根据选择器的选定值,列表视图将更新。这是密码 <Picker style={{ flex: 0.3, marginTop: -10 }} selectedValue={this.state.helpModel.needyType} onValueChange={(itemValue, itemIndex) => { this.setState((prevState) => { return { hel

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

<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.setState((prevState)=>{
返回{helpModel:{needyType:itemValue,helpStatus:prevState.helpModel.helpStatus}
});
this.getNeedies(this.state.helpModel);
}}>
{this.state.helpCategory.map((数据,索引)=>{
返回(
);
})}
我已使用状态变量(
this.state.helpModel.needyType
)绑定选择器的
selectedValue
,并在
onValueChange
上更新状态变量。然后根据
this.state.helpModel
调用一个方法,该方法将获取列表数据并更新列表视图。但是
helpModel
不会立即获得更新,因此它会保留以前的值一段时间,但在这段时间内,会调用
getNeedies
方法,并根据以前的值请求数据

这可能是因为
setState
具有异步行为。我使用
setTimeout
在大约2-3秒后调用
getNeedies
方法解决了这个问题。但有没有更好或优雅的方法来做到这一点?可能是
。那么
就像
承诺中的那样


我刚刚开始使用React Native,因此如果这太基本而无法询问,请忽略。

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

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

通过
setState
方法更改状态不会立即更新应用程序的
状态。将使用回调函数

this.setState({value: event.target.value}, function () {
    console.log(this.state.value);
});
这里有详细的信息,如果你想遵循