2017-08-07 12 views
0

私はネイティブに反応し、firebaseを使って簡単なアプリケーションをバックエンドとして構築しようとしています。リアル・タイム・ネーム・リアルタイム・データベース・データが正常に動作しない(firebase)?

私は、サインアップ、ログイン、ログアウトを行い、mobilenumberを設定しました。私はリアルタイムでmobilenumberデータを読み込もうとしています。私は、ListViewコントロールを配置し、機能と呼ばれる

_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) 
     }); 
    } 

レンダリング機能で:

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

私は、リストビューの呼び出しでコールバックパラメータを欠けている知っているし、データを取得する機能は以下の通りですしかし、私は何を助けることができるパラメータに追加するか分からないのですか?

答えて

0

代わりの代わりとTextInputのためonChangeText属性にリストビューの使用のTextInputを使用して、このようなmetodeに電話をかける:

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

にはパラメータだけでこれにMethodeのを修正しない解析:

_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: ''}); 
    } 
    } 
関連する問題