【发布时间】:2020-07-24 20:35:11
【问题描述】:
仅供参考;我检查了所有之前提出的问题,但没有一个与我的问题直接相关。我在一个集合中有文档,我正在尝试收听文档的更改。我首先使用get() 检索集合中的所有文档,然后遍历所有文档以监听更改。这可能是错误的方法,但我在文档或在线中找不到任何其他内容。
我的问题是因为我首先使用get(),除非我手动刷新,否则不会调用 onSnapshot 侦听器。我试图让它在发生变化时自动显示变化。例如,如果我将一个文档添加到我希望它运行的集合中。
这是我的代码:
const db = firestore().collection('Networks');
const NetworksListScreen = ({ navigation }) => {
const [state, setState] = useState({ networks: [] });
const { networks } = state;
const getNetworks = async () => {
try {
await db.get().then((querySnapshot) => {
let networks = [];
querySnapshot.forEach(doc => {
db.doc(doc.id).onSnapshot(newDoc => {
console.log(newDoc.id, '=====>', newDoc.data());
networks.push(doc.data());
});
});
setState({
networks: networks
});
});
} catch (err) {
console.log(err)
}
};
useEffect(() => {
getNetworks();
}, []);
}
非常感谢任何帮助。
【问题讨论】:
标签: reactjs firebase react-native google-cloud-firestore react-native-firebase