2016-05-30 32 views
0

我目前正在嘗試將我的應用程序的初始狀態設置爲從Firebase提取的值。然而,我無法弄清楚如何正確處理Javascript的異步性質 - 目前當我在render函數中獲取應用程序的狀態時,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)); 
    }, 
相關問題