【发布时间】:2019-05-12 13:59:43
【问题描述】:
我最近开始在 React Native 上学习开发,我遇到了一个问题,我目前正在使用 firebase 为应用程序编写注册系统,我希望用户使用选择器选择运动室和所有可供选择的运动室都是从 firebase 数据库中获取的。
我的代码如下:
getPickerElements() {
var sportsRoomRef = firebase.database().ref('/sportsRoomList');
var snapshotList = new Object();
var pickerArr = [];
sportsRoomRef.once('value').then(snapshot => {
snapshotList = snapshot.val();
for (var key in snapshotList) {
pickerArr.push(<Picker.Item label={snapshotList[key]} value={snapshotList[key]}/>);
}
})
return (pickerArr);
}
这是我认为的选择器:
<Picker
selectedValue={this.state.pickerSelection}
style={[{width: 290, height: 50, color: 'black'}, pickerStyle]}
onValueChange={(itemValue) => this.setState({pickerSelection: itemValue})}>
<Picker.Item label='Salle de sport' value='default'/>
{getPickerElements()}
</Picker>
我的问题是,当返回时,pickerArr 不包含任何内容,因为根据我的阅读 .then() 是异步的,但不可能在 .then() 中使用 return。
我已经被这个问题困扰了很长一段时间,现在尝试不同的东西,但由于我对 React Native 缺乏了解,我仍然没有找到解决方案。
我已经记录了 snapshotList 的内容,我可以肯定地说,数据已从数据库中正确获取,但我无法让选择器显示它。我该如何解决这个问题?
【问题讨论】:
标签: javascript reactjs firebase react-native promise