Firebase 在多个组件中收听on(添加了child_)-React native

Firebase 在多个组件中收听on(添加了child_)-React native,firebase,react-native,firebase-realtime-database,Firebase,React Native,Firebase Realtime Database,我正在尝试使用React Native with firebase构建一个即时消息应用程序。问题是查询新收到的消息,当用户打开聊天屏幕时(使用on('child_added')。limitToLast(1)以避免多个不必要的呼叫),它工作正常。但是,如果用户离开聊天室并随后收到多条消息,则不会将所有收到的消息添加到聊天日志中,因为聊天组件仅为添加的最新子项运行。如何确保应用程序侦听所有添加的子项,而不管用户在哪个屏幕上?我不认为在每个组件中实现on('child_added')是一个好主意,因为

我正在尝试使用React Native with firebase构建一个即时消息应用程序。问题是查询新收到的消息,当用户打开聊天屏幕时(使用
on('child_added')。limitToLast(1)
以避免多个不必要的呼叫),它工作正常。但是,如果用户离开聊天室并随后收到多条消息,则不会将所有收到的消息添加到聊天日志中,因为聊天组件仅为添加的最新子项运行。如何确保应用程序侦听所有添加的
子项
,而不管用户在哪个屏幕上?我不认为在每个组件中实现
on('child_added')
是一个好主意,因为如果用户在收到消息时在聊天室和另一个屏幕之间导航,它可能会创建同一消息的多个副本。

您有两个选项,要么使用循环连接侦听器,我的意思是创建一个循环,然后一个接一个地将侦听器连接到所有必需的节点。但我想没有人会喜欢它


因此,第二种方法是,您可以使用Firebase云消息传递,从发送方发送消息,在接收方应用程序中的onMessageReceived中,您可以检索从发送方传递的任何数据。即使应用程序未运行,这也将帮助您获得通知之类的更新。

在React应用程序中,我通常使用两个屏幕共享的高级组件

但在其他框架中,我有时会创建一个单独的“类”来管理此类场景中的侦听器。然后从需要访问数据的每个组件访问该类,它可以管理侦听器和来自这些侦听器的数据


Actovor也有很多框架,所以您可能需要考虑查看或.< /P>,请您附上链接我们的链接,好吗?据我所知,FCM用于编写和发送推送通知,我不知道如何绑定完整的消息数据,如果您能提供一个片段来显示

onMessageReceived
的实现,以及在何处实现它(在聊天组件或收件箱组件或其他任何地方),那就太好了。谢谢您将通过FCM获得新消息等更新,并将其附加到现有的聊天列表中,如果没有,则您需要获取旧聊天,您可能已经注意到whatsapp中的这一点,即即使您打开聊天屏幕并仅显示最新的1-2条消息,他们也会加载旧聊天。因此,在FCM中使用相同的消息模型,并在接收者上检索它,然后将其附加到聊天列表中。虽然我不是React本地开发人员,所以我可以引导您了解这些概念。好的,我会研究一下,很快回来!好的@PrajwalKulkarni,等待您的回复。