2016-05-30 60 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)); 
    }, 
相关问题