Я начал изучать разработку на React Native сравнительно недавно и столкнулся с проблемой, сейчас я пишу систему регистрации для приложения, использующего 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 () , является асинхронным, но невозможно использовать return внутри .then ().
Я застрял в этой проблеме довольно долгое время, пробуя разные вещи, и до сих пор не нашел решения из-за недостатка знаний о React Native.
Я вошел в системусодержимое snapshotList , и я могу точно сказать, что данные правильно извлекаются из базы данных, но я не могу заставить сборщик отображать их.Как я могу это исправить?