Reactjs 如何在React Native中将firebase中的用户特定数据显示为平面列表
我是reactnative和firebase的新手,我查找了有关这方面的任何信息,但没有找到解决方法。基本上,我想显示firebase的数据,这是针对当前登录的用户的,我已经完成了一半,但不知道接下来要做什么。有人能告诉我剩下的代码是什么吗 这是我的密码:Reactjs 如何在React Native中将firebase中的用户特定数据显示为平面列表,reactjs,firebase,react-native,firebase-realtime-database,Reactjs,Firebase,React Native,Firebase Realtime Database,我是reactnative和firebase的新手,我查找了有关这方面的任何信息,但没有找到解决方法。基本上,我想显示firebase的数据,这是针对当前登录的用户的,我已经完成了一半,但不知道接下来要做什么。有人能告诉我剩下的代码是什么吗 这是我的密码: class HomeScreen extends Component { constructor() { super(); this.state = { uid: '' } } readUs
class HomeScreen extends Component {
constructor() {
super();
this.state = {
uid: ''
}
}
readUserData() {
currentUser = firebase.auth().currentUser
var that = this
firebase.database().ref(`BorrowedBooks`).child(currentUser.uid).on('value', function (data) {
console.log(data.val())
});
}
signOut = () => {
firebase.auth().signOut().then(() => {
this.props.navigation.navigate('Login')
})
.catch(error => this.setState({ errorMessage: error.message }))
}
render() {
this.state = {
displayName: firebase.auth().currentUser.displayName,
uid: firebase.auth().currentUser.uid
}
return (
<View style={styles.container}>
<Text style = {styles.textStyle}>
Hello, {this.state.displayName}
</Text>
<View>
<FlatList/>
</View>
<Button
color="#3740FE"
title="Logout"
onPress={() => this.signOut()}
/>
<Button
color="#3740FE"
title="display books"
onPress={this.readUserData}
/>
</View>
);
}
}
类主屏幕扩展组件{
构造函数(){
超级();
this.state={
uid:'
}
}
readUserData(){
currentUser=firebase.auth().currentUser
var=this
firebase.database().ref(`brookedbooks`).child(currentUser.uid).on('value',函数(数据){
console.log(data.val())
});
}
注销=()=>{
firebase.auth().signOut()。然后(()=>{
this.props.navigation.navigate('Login'))
})
.catch(error=>this.setState({errorMessage:error.message}))
}
render(){
this.state={
displayName:firebase.auth().currentUser.displayName,
uid:firebase.auth().currentUser.uid
}
返回(
您好,{this.state.displayName}
this.signOut()}
/>
);
}
}
这就是我的firebase数据库的外观:
这是console.log之后的响应:您需要将数据存储在数组中,然后才能在FlatList中显示它
readUserData() {
currentUser = firebase.auth().currentUser
var that = this
firebase.database().ref(`BorrowedBooks`).child(currentUser.uid).on('value', function (data) {
//console.log(data.val())
let DATA = [];
if(data.exists()){
KEY = Object.keys(data.val());
KEY.forEach( (key_id) => {
let a = snapshot.val()[key_id];
a.key = key_id;
DATA.push(a);
})
that.setState({userData: DATA})
});
}
然后可以在平面列表中显示它
<FlatList
data = {this.state.userData}
renderItem ={({item}) =>
//render Items here
}
/>
//在此处渲染项目
}
/>
您是否能够获取数据?如果你这样做了,你应该将其存储在状态中,然后在平面列表中使用此状态。我可以在i console.log时获取数据,但它不是以数组的形式。然后,在将其存储在状态之前,你应该将其转换为所需的形状。这就是问题所在,我不太明白如何做到这一点。。你能展示一下这是怎么做到的吗?你能发送你收到的回复吗?