我在我的应用程序中使用了Picker组件。屏幕上有一个列表视图。根据Picker的选定值,列表视图会得到更新。以下是代码:
我已经使用状态变量(
可能是因为
我刚开始学习React Native,请忽略如果这个问题太基础了。
<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
具有异步行为,所以出现了这种情况。我使用setTimeout
等待2-3秒后调用getNeedies
方法来解决此问题。但是否有更好或更优雅的方法来执行相同的操作?或许像promises
中的.then
一样?我刚开始学习React Native,请忽略如果这个问题太基础了。