React Native和Firebase:如何限制数据的提取次数



我目前正在开发一款使用Firebase作为后端的React Native应用程序。我不会对细节太具体,但基本上,应用程序必须不断获取上传的新数据,所以我在主代码中添加了这一部分:

useEffect(() => {
db.ref('rooms').on('value', (data) => {
if (startRoom.id) {
ping = (data.val());
setRoom(() => (data.val())[startRoom.id]);
}
}); 
},[ping]);

这样,每次在对象"中添加新数据时;房间";在我的数据库中,应用程序能够更新与之链接的所有变量。然而,这个过程可能会导致一些巨大的速度减慢和性能问题:事实上,当不同用户上传了大量数据时,或者当数据上传得非常快时(比如说,上传是由用户点击处理的,所以非常快的点击可能会导致数据库崩溃(,该应用程序不断刷新页面,甚至每秒刷新几次,导致了我所说的速度减慢。所以我的想法是:有没有办法限制firebase-ref方法在一段时间内的获取次数?比如,如果数据库在一秒内上传了七次,它只会捕捉到最后一次,而忽略上传,例如,上传发生在很短的时间内。换句话说,我想知道是否有一种方法可以限制;灵敏度";React Native的ref方法或useEffect方法。非常感谢!

如果更新每秒发生多次,我认为您应该改变方法。

我认为您不应该在应用程序发生更改时立即使用数据更新应用程序,而是将更改存储到数组changes中,并设置一个间隔,即每隔3秒运行一次,检查changes数组。如果其中有数据,请使用它更新应用程序,然后清除数组。这样,即使有很多变化,你也可以确保你的应用程序只以固定的速度更新

ping的数据类型是什么?如果它是一个对象,那么useEffect每次都会运行,因为JavaScript检查对象相等性的方式(我相信它们会检查引用(。

解决这个问题的方法是使用DeepCompareEffect或lodash的isEqual。或者只使用一个基元值作为useEffect的依赖项。

最新更新