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.但有没有更好或更优雅的方式来做同样的事情?可能会.then像promises?
我刚开始使用React Native,所以如果这个问题太基础,请忽略.
因为setState以异步方式工作.打完电话后这意味着setState将this.state不会立即改变.因此,如果要在设置状态后立即执行操作,请使用第二个参数作为回调setState.考虑这个例子:
this.setState({
data: newData
}, () => {
//TODO: Do something with this.state here
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |