问题:如何使用firebase onSnapshot并保持一致性

我正在开发一个 React/redux 应用程序,我的想法是使用onSnapshot订阅我所有的 firebase 集合,并在每次更新时更新状态,React 将在每次状态更改时更新 UI。

但是,我也有触发多个集合(比如 A 和 B)中的更新的 redux 操作,它们将导致不同的onSnapshot调用。这使我的 UI 不一致。

Firebase 中的最佳实践是什么?

解答

我不完全确定我是否正确理解了您的情况,但我认为您是在说您可能会进行更新以更改 2 个集合(A 和 B)并且您有 2 个 onSnapshot 侦听器,一个在集合 A 上,一个在集合 B,这些 onSnapshot 事件不会同时触发,导致你的 UI 不同步。

所以,好消息是,我们正在研究一种名为onSnapshotsInSync的新方法,我认为它应该只在两个侦听器同步时触发一次。它还没有准备好,但希望很快就会完成。WIP 在这里提交

同时,我不确定最流行的解决方法是什么,但它会涉及某种客户端检查您的数据是否同步。也许有一种合乎逻辑的方法可以根据您拥有的数据类型进行检查,如果没有,我猜您可以做的一件事是发送相同的唯一字符串(基于时间戳?)与每个同时更新,然后如果所有数据都没有相同的匹配字符串,则不渲染您的渲染代码。这看起来确实不太理想,所以希望我们能尽快推出新方法。

Logo

React社区为您提供最前沿的新闻资讯和知识内容

更多推荐