【发布时间】:2021-01-14 01:31:32
【问题描述】:
如何使用 Reactjs 使用多个“onSnapshot”更改?
有人在 ReactJs 应用程序中使用过多个“onSnapshot”吗?
在此视频中React Firebase CRUD TutorialMaksim Ivanov 展示了我们可以通过返回“onSnapshot”输出来订阅 Firestore 更改,如下所示:
React.useEffect(() => {
return db.collection("dashboars").onSnapshot((snapshot) => {
snapshot.forEach(doc => {
dashboardsData.push({ ...doc.data(), id: doc.id });
});
setDashboards(dashboardsData);
});
}, []);
就我而言,每个“仪表板”都有带有“devicesId”的“卡片”集合。在另一个集合中,有相对的 devicesId 名称和状态。
我需要在屏幕上显示仪表板、卡片和设备的任何更改。
集合“仪表板” /dashboards/OKtApgxGYeMDst/cards/KgKXJrg9SDvXVC 返回 {devicedId:"esp32_456194"}
Dashboard name: "DASHBOARD 01"
..Card name: "esp32_AF49AC (dev)"
..Card name: "esp32_455FE8"
..Card name: "esp32_45A134"
..Card name: "esp32_456194"
....DeviceId: "esp32_456194"
集合“设备”
DevideId: "esp32_456194"
--> name: "ED 01", status: "on"
--> name: "ED 02", status: "off"
--> name: "SD 01", status: "off"
--> name: "SD 02", status: "off"
【问题讨论】:
-
是要更改
dashboards集合数据还是仅更改后续devices集合数据?我问的原因是因为您不一定需要列出这两个集合,只需要列出将更改数据的集合。 -
@rafael-lemos 这就是为什么你是伟大的系统工程师 ;-)
-
我可能会使用这种方法。我只能订阅设备数据的更改,但我可以在不刷新页面的情况下更新仪表板名称、颜色、状态、打开或关闭折叠卡。无论如何,你能提供一个关于只听设备集合的建议吗?首先我必须按仪表板过滤以将它们分组
标签: reactjs google-cloud-firestore