如何在React-Native应用程序中处理对Firebase的异步调用?

时间:2016-05-30 01:18:56

标签: javascript asynchronous reactjs firebase react-native

我目前正在尝试将应用程序的初始状态设置为从Firebase中提取的值。但是,我无法弄清楚如何正确处理Javascript的异步性质 - 目前当我在render函数中获取应用程序的状态时,itemsList未定义。对于我做错的任何建议都将不胜感激。

  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 个答案:

答案 0 :(得分:1)

您需要使用其中一种React生命周期方法来处理异步调用:

查看文档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));
  },