Firebase、React -检测onChildAdded初始化运行完成的时间

jljoyd4f  于 12个月前  发布在  React
关注(0)|答案(1)|浏览(92)

在我的应用程序中,我有以下侦听器,它最初获取所有子元素,然后是每个新添加的子元素:

onChildAdded(queryRef, function(messageSnapshot) {
          let data = messageSnapshot.val()
          // The following log is ran multiple times on the inital run(once for each child element)
          console.log(data)

 });

字符串
我想检测侦听器何时完成并收集了初始运行时的所有数据。目前,它记录每个单独的子对象,一次一个。相反,我想记录一个包含所有子对象数据的对象。为了做到这一点,我需要一种方法来检测初始运行何时完成,以及所有子对象何时被初始获取。
搜索后,我找不到任何解决方案或内置的方法来实现这一点。谢谢。

qyswt5oh

qyswt5oh1#

如果只有onChildAdded,则无法确定初始数据何时加载。为此,您需要使用onValue,或者同时使用onChildAdded * 和 * onValue
第二种情况的示例:

let hasLoadedInitialValue = false;
onChildAdded(queryRef, function(messageSnapshot) {
  console.log(hasLoadedInitialValue, messageSnapshot.val());
});
onValue(queryRef, function(messagesSnapshot) {
  hasLoadedInitialValue = true;
});

字符串
现在,您将首先看到一些这样的行:
错的,
错的,
错的,
一旦所有的初始数据都加载完毕,并且添加了一个新的子节点,您将看到:
说真,
这一点已经讨论过很多次了,所以我建议您查看:

这些帖子中的许多可能使用了命名空间的JavaScript API,但是我在回答您上一个问题时提供的Upgrade from the namespaced API to the modular API的链接应该会告诉您如何转换这些代码。

相关问题