2016-05-30 6 views
0

現在、私のアプリケーションの初期状態をFirebaseから取得した値に設定しようとしています。しかし、私は正しく私のrender関数のアプリケーションの状態を取得するとき、JavaScriptの非同期性を正しく処理する方法を把握することができません、itemsListは未定義です。私が間違っていることに対する示唆は非常に高く評価されます。React-NativeアプリでFirebaseへの非同期呼び出しを処理する方法は?

getInitialState: function() { 

    var dataSource = new ListView.DataSource({ 
     rowHasChanged: (r1, r2) => r1.guid != r2.guid, 
     sectionHeaderHasChanged: (s1, s2) => s1 !== s2 
    }); 

    return { 
     dataSource: dataSource, 
     itemsList: this.getItemsList() 
    }; 
}, 

getItemsList: function() { 
    var userRef = usersRef.child("5019e705-0-29f09e520b7e"); 
    var itemsListRef = userRef.child("items_list"); 
    var itemsList; 

    itemsListRef.on('value', (snap) => { 
     itemsList = snap.val(); 
     return itemsList;  
    }); 
}, 

答えて

1

あなたは、非同期呼び出しを処理するように反応するライフサイクルのいずれかの方法を使用する必要があります。

チェックアウトドキュメントをHERE

componentDidMount: function() { 
    this.serverRequest = $.get(this.props.source, function (result) { 
     var lastGist = result[0]; 
     this.setState({ 
     username: lastGist.owner.login, 
     lastGistUrl: lastGist.html_url 
     }); 
    }.bind(this)); 
    }, 
関連する問題