База данных Firebase Realtime показывает только последний элемент - PullRequest
1 голос
/ 14 июня 2019

Когда я впервые захожу на этот экран, Firebase показывает каждый элемент.Когда я перехожу на другой экран и возвращаюсь к этому экрану, Firebase показывает только последний элемент.Я не знаю, где ошибка и как ее исправить.

  var data = []
  var firebaseConfig = {
  apiKey: "key",
  authDomain: "information",
  databaseURL: "information",
  projectId: "information",
  storageBucket: "information",
  messagingSenderId: "information",
  appId: "information"
};
firebase.initializeApp(firebaseConfig);
export default class ConfScreen extends React.Component {
 constructor(props){
    super(props);
    this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 != r2})
    this.state = {
      listViewData: data,
      newMarker: "",
    }
  }
  componentDidMount(){
    var that = this
    firebase.database().ref('/markers').on('child_added', function(data){
      var newData = [...that.state.listViewData]
      newData.push(data)
      that.setState({listViewData: newData})
    })
  }
       <List
              enableEmptySections
              dataSource={this.ds.cloneWithRows(this.state.listViewData)}
              renderRow={data => 
                <ListItem>
                  <Text>{data.val().title}</Text>
                </ListItem>
              } />

1 Ответ

0 голосов
/ 14 июня 2019

Я не совсем уверен, где проблема, но у нее больше шансов на работу:

firebase.database().ref('/markers').on('value', function(snapshot){
  var newData = [...that.state.listViewData]
  snapshot.forEach(function(data) {
    newData.push(data);
  });
  that.setState({listViewData: newData})
})
...