2017-08-07 2 views
0

Ich bin neu zu reagieren native und versuchen, eine einfache App mit Firebase als Backend zu bauen.Reactive native Get Echtzeit-Datenbankdaten funktionieren nicht (Firebase)?

Ich habe eine Anmeldung, Anmeldung, Abmeldung und Einstellung einer Mobilnummer vorgenommen. Ich versuche, die handynummer Daten in Echtzeit zu lesen. Die Funktion, die Daten zu bekommen, ist wie folgt:

_listenForMobileNumberChanges(userId, callback) { 

    let userMobilePath = "/user/" + userId + "/details"; 

    firebase.database().ref(userMobilePath).on('value', (snapshot) => { 

     var mobile = ""; 

     if (snapshot.val()) { 
      mobile = snapshot.val().mobile 
     } 

     callback(mobile) 
     }); 
    } 

In der Render-Funktion mir ein Listview platziert und rief die Funktion:

<ListView 
     dataSource={this.state.mobile} 
     renderRow={() => {this._listenForMobileNumberChanges(this.state.userId}} 
    /> 

Ich weiß, ich bin die Rückruf-Parameter in dem Listview Aufruf fehlen , aber ich weiß nicht, was ich dem Parameter hinzufügen soll, könnte mir jemand helfen?

Antwort

0

Statt eine Listview Verwendung TextInput- statt und im onChangeText Attribute für den TextInput- der Verwendung einen Aufruf der metode wie diese machen:

<TextInput 
     style={{height: 40, borderColor: 'gray', borderWidth: 1}} 
     onChangeText={(usermobileNumber) => this._listenForMobileNumberChanges()} 
     value={this.state.usermobileNumber} 
    /> 

keine Parameter Parsen nur die Methode, um diese ändern:

_listenForMobileNumberChanges() { 
    alert('inside the listen function'); 

    if(firebase.auth().currentUser) { 
     let userId = firebase.auth().currentUser.uid; 
     let userMobilePath = "/user/" + userId + "/details"; 

     firebase.database().ref(userMobilePath).on('value', (snapshot) => { 

      var mobile = ""; 

      if (snapshot.val()) { 
       mobile = snapshot.val().mobile 
      } 

      this.setState ({usermobileNumber: mobile}); 
     }); 
    } else { 
     this.setState ({usermobileNumber: ''}); 
    } 
    } 
Verwandte Themen