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);
});
这里有详细的信息,如果你想遵循