firebase - 将 react-native Picker 绑定到从 Firebase 返回的数据
问题描述
使用 react native 和 Firebase,我试图从对 Firebase 的查询中绑定(刷新)一个 Picker(下拉列表)。设置静态信息就可以了;但是,当我尝试“轮询”数据库并检索信息时,我无法让 Picker 使用适当的项目进行更新。我知道这是一个异步调用——我可以安慰最终的人口,所以我知道数据正在正确返回。我已经尝试过堆栈溢出的其他解决方案,但目前都没有工作(最新博览会)。我试图将代码与基础知识配对(见下文)。最新的迭代告诉我有一个 TypeError 评估 this.state.snapshot。
谁能在正确的方向上推动我,或者在从数据库中提取数据并更新 Picker 时向我展示一些“有效”的简单代码?
我尝试使用其他堆栈溢出答案来解决这个问题,但它们要么已经过时,要么不起作用。
class addanimal extends React.Component{
constructor() {
this.state = {
snapshotList: {},
};
this.getPickerElements = this.getPickerElements.bind(this);
}
componentDidMount() {
//var sportsRoomRef = firebase.database().ref('/sportsRoomList');
let userID = f.auth().currentUser.uid; // grab the current users userId
//var pickerArr = [];
var sportsRoomRef = database.ref('animals/'+userID).orderByChild('animaltype').equalTo('ram');
sportsRoomRef.once('value').then(snapshot => {
var snapshotList = snapshot.val();
this.setState({snapshotList});
})
}
getPickerElements() {
var pickerArr = [];
var snapshotList = this.state.snapshotList;
for (var key in snapshotList) {
pickerArr.push(<Picker.Item label={snapshotList[key]} value={snapshotList[key]}/>);
}
return pickerArr;
}
render() {
return (
<View style={{marginTop: 100}}>
<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>
</View>
);
}
}
导出默认添加动物;
我希望 Picker 使用 Firebase 返回的数据进行更新
解决方案
尝试在您周围getPickerElements()
加上一个检查,以确保当您尚未收到 Firebase 的响应时它不会执行:
{this.state.snapshotList !== undefined &&
getPickerElements()
}
一旦您的状态发生更改以反映 Firebase 响应,它通常应该重新渲染并添加新项目。
推荐阅读
- reactjs - 错误:不变违规:元素类型在测试时无效
- sql-server - SQL Server 的前 1000 个素数
- swift - 当我从 Firebase 存储上传新图像时,imageView 不会更改图像
- arrays - 如何访问状态数组中的属性
- python - 如何在类型提示中指定 dict_values?
- php - 全线背景颜色
- javascript - 使用 Javascript 向 html 添加类
- jax-rs - Swagger:@ApiModel 注释被忽略
- angularjs - Laravel - 将表单输入从角度传递到 API 控制器?
- java - 检查环境变量是否设置了运行时spring boot