进行本地抓取GeoFire的反应,并且在列表中只能显示一个数据

时间:2019-12-17 19:47:31

标签: reactjs firebase react-native geofirex

我正在使用react native和Geofire创建一个应用程序,它将获取最近的位置并显示在FlatList中。我的代码基于this stackoverflow answer,因此我不确定为什么无法显示数据。

我的数据库结构:数据节点包含GeoFire设置的datalocation。显然,它们具有相同的密钥。 enter image description here

我尝试console.log来查看代码中发生了什么。它显示了在3个数组中提取3次的数据。 enter image description here

这是我的代码firebase代码:(为了查看结果,我尝试了不同的radius并获取了预期的结果,因此它可以正常工作,我还尝试使用once而不是{{ 1}},但没有运气

on

我的问题是firebase和geoFire运行了3次,因此无法将所有数据汇总在一起。它将仅显示“最后” setState数据到清单。 如何解决此问题? 非常感谢!

1 个答案:

答案 0 :(得分:0)

由于您总是在行dataList中将const dataList=[];创建为一个空数组,因此组件每次获取新数据时都会忘记其旧状态。相反,您可以在添加新项目之前将当前data数组复制到dataList中:

const dataList = [...data];

请注意,useEffect钩子的第二个参数当前为空数组([])。为了使您的查询在coordinates发生更改时保持最新,您应该在数组中包含coordinates

useEffect(() => {
    // ...
},[coordinates]);