如何在检索到Firebase中的数据后异步调用fetch

时间:2017-11-17 11:35:15

标签: javascript reactjs firebase react-native

我想从存储在Firebase数据库中的URL中获取数据并在我的React Native应用程序中显示数据,我尝试了一些有关Promies和Async / Await的教程,但我似乎无法应用它们我的问题在于我的代码:

listenForItems(itemsRef) {
    itemsRef.on('value', (snap) => {
      var items = [];
      snap.forEach((child) => {
        items.push({
          url: child.val().url,
          _key: child.key
        });
      });
      this.setState({ urls: items });
      //this.fetchData(); calling fetch here causes duplicate data
    });
    this.fetchData(); // calling fetch here does not display data
  }

如何使用promises或async / await异步显示数据?

1 个答案:

答案 0 :(得分:0)

您应该使用布尔标志来指示初始数据已加载到' value'中。 '值'将立即加载所有数据,数据集的任何更改都将导致重新触发。

如果您不想重新触发,请考虑使用users.to_a.map(&:serializable_hash) users.map(&:attributes) users.map { |r| r.attributes.symbolize_keys }

<activity
    android:name=".YourActivity"
    android:launchMode="singleInstance" />

您可能希望阅读此https://stackoverflow.com/a/27995609/1405577条评论,说明如何区分“价值”。和&#39; child_added&#39;听众。最后查看Firebase JS SDK documentation for Reference.on