使用Firestore在reactnative中使用延迟加载进行实时更新

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

我想延迟加载一个列表,同时应该对已经获取的数据进行实时更新。

第一批:

const querySnapshot = await query.get();
  const customers = querySnapshot.docs.map(doc => ({
    id: doc.id,
    ...doc.data()
  }));

对于第二批和后续批次如何使用同一个侦听器? 否则,对于每个批次,我都必须创建一个新的侦听器,我认为这不是一个好的策略。 或者有很多听众可以吗?每个使用该应用程序的用户都会创建许多侦听器。

javascript firebase react-native google-cloud-platform google-cloud-firestore
1个回答
0
投票

我想延迟加载一个列表,同时应该对已经获取的数据进行实时更新。

当您在代码中使用

get()
调用时,如下面的代码行所示:

const querySnapshot = await query.get();

您仅从 Firestore 读取数据一次,您没有监听任何实时更新。如果您需要在结果集中的某些内容发生更改时实时收到通知,那么您应该使用持久侦听器

对于第二批和后续批次如何使用同一个侦听器?否则,对于每个批次,我都必须创建一个新的侦听器,我认为这不是一个好的策略。

为什么你认为创建听众不是一个好的策略?这实际上是一件好事。您可以创建任意数量的侦听器,但前提是您在不再需要它们时分离它们

每个使用该应用程序的用户都会创建许多监听器。

那就没问题了。您可以使用的侦听器数量没有限制。听众很便宜。您应该担心的一件事是您阅读的文档数量。由于我们无法看到您的

query
是如何定义的,我假设已经使用 limit(n) 调用限制了文档数量。如果您没有添加这样的限制,我建议您添加。如果您有大量文档,更明智的解决方案是使用分页,并以较小的块加载数据。

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