Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在React Native中将firebase中的用户特定数据显示为平面列表_Reactjs_Firebase_React Native_Firebase Realtime Database - Fatal编程技术网

Reactjs 如何在React Native中将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

我是reactnative和firebase的新手,我查找了有关这方面的任何信息,但没有找到解决方法。基本上,我想显示firebase的数据,这是针对当前登录的用户的,我已经完成了一半,但不知道接下来要做什么。有人能告诉我剩下的代码是什么吗

这是我的密码:

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时获取数据,但它不是以数组的形式。然后,在将其存储在状态之前,你应该将其转换为所需的形状。这就是问题所在,我不太明白如何做到这一点。。你能展示一下这是怎么做到的吗?你能发送你收到的回复吗?