我在应用程序中使用了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
是异步行为。我在使用getNeedies
2-3秒后解决了使用call方法的问题setTimeout
。但是,有没有更好或更优雅的方法可以做到这一点呢?可能会.then
像promises
?
我刚刚开始使用React Native,所以请忽略这是否太基础了。
由于setState
以异步方式工作。打完电话后这意味着setState
将this.state
不会立即改变。因此,如果要在设置状态后立即执行操作,请使用2nd参数作为on上的回调setState
。考虑以下示例:
this.setState({
data: newData
}, () => {
//TODO: Do something with this.state here
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句