这是Firebase实时数据库中存储的数据
"Users" : {
"Joe" : {
"name" : "xxx",
"email" : "xxx"
},
"Matt" : {
"name" : "xxx",
"email" : "xxx"
}
}
这就是React Native Flatlist 中需要的数据
Users : [
{
id : "Joe"
name : "xxx",
email : "xxx",
},
{
id : "Matt"
name : "xxx",
email : "xxx",
}
]
componentDidMount()
。。
firebase.database("Users").ref().once('value').then(function(snapshot) {
var arr = _.values(snapshot.val());
this.setState({ users: JSON.stringify(arr) });
})
渲染平面图:
<FlatList
extraData={this.props}
data={this.props.users}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (
...
我如何使用firebase.database().ref()
并返回flatlist中所需的数据?
您可以尝试以下操作:
我的constructor
中的第一个
constructor(props) {
super(props);
this.state = {
arrData:[]
};
}
然后从firebase 获取数据
var ref = firebase.database().ref("Users"); //Here assuming 'Users' as main table of contents
ref.once('value').then(snapshot => {
// console.log(snapshot.val());
// get children as an array
var items = [];
snapshot.forEach((child) => {
items.push({
id: child.val().id,
name: child.val().name,
email: child.val().email,
phone: child.val().phone,
status: child.val().status,
user_type: child.val().user_type
});
});
this.setState({ arrData: items});
});
现在您可以在FlatList
或ListView
中填充arrData
。
希望它能帮助你!
这里我得到了用户在对象中发布的问题的数组,然后我创建了一个数组,然后将该数组分配给变量。
componentDidMount(){
let user = firebase.auth().currentUser ;
let uid = user.uid;
firebase.database().ref('Problems').orderByChild('userid').equalTo(uid)
.once('value' )
.then(snapshot => {
// console.log(snapshot.val());
var items = [];
snapshot.forEach((child) => {
items.push({
id: child.key,
problemDescription: child.val().problemDescription,
problemTitle: child.val().problemTitle,
problemstatus: child.val().problemstatus,
timeanddate: child.val().timeanddate,
});
});
console.log(items);
this.setState({problmes: items});
this.setState({isloading:false});
})
.catch(error => console.log(error));
}