Firebase、React - 检测 onChildAdded 初始运行何时完成

问题描述 投票:0回答:1

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

 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)

 });

我想检测侦听器何时完成并收集初始运行的所有数据。目前,它一次记录每个孩子。相反,我只想记录一个包含所有孩子数据的对象。为此,我需要一种方法来检测初始运行何时完成,以及所有子项何时已被初始获取。

搜索后,我找不到任何解决方案或内置方法来完成此任务。谢谢。

javascript firebase firebase-realtime-database
1个回答
0
投票

仅使用

onChildAdded
,没有好的方法来确定初始数据何时加载。您需要使用
onValue
来实现此目的,或者同时使用
onChildAdded
onValue

第二种情况的例子:

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

现在您将首先看到其中的一些行:

假,
假的,
假的,

然后一旦加载了所有初始数据并且添加一个新的子节点,您将看到:

真实,

这已经被报道过很多次了,所以我建议检查一下:

其中许多帖子可能使用命名空间 JavaScript API,但是我在回答您之前的问题时给出的从命名空间 API 升级到模块化 API 的链接应该向您展示如何转换该代码。

© www.soinside.com 2019 - 2024. All rights reserved.