Expo React Native中Firestore地理查询仅返回单条结果求助
解决Firestore地理查询仅显示单个结果的问题
问题根源
你代码里的循环中每次调用setReada(workingX)都会直接覆盖之前的状态值,所以最终只会保留最后一条文档的name,看起来像是查询只返回了一个结果。实际上查询大概率返回了多条符合条件的文档,但状态被反复覆盖导致只显示最后一条。
修复代码
调整逻辑,先收集所有结果再一次性更新状态:
const retrieveNetwork2 = async () => { const query = geocollection.near({ center: new firebase.firestore.GeoPoint(15.5, -90.25), radius: 1000, }); const querySnapshot = await query.get(); // 把所有文档的name字段收集到数组里 const allNames = querySnapshot.docs.map(doc => doc.data().name); // 一次性更新状态,避免覆盖 setReada(allNames); };
补充说明
删除文档后出现另一个结果,是因为删除前循环最后一次覆盖的是被删文档的name,删除后循环最后一条变成了下一个文档的name——本质还是状态被连续覆盖的问题,并非查询本身没有返回多条数据。如果你的setReada原本是存储单个值的状态,需要把状态结构改成数组类型,才能展示所有结果。
内容的提问来源于stack exchange,提问作者Andres Pelaez
相关产品推荐
相关产品推荐

