javascript - React-Native + Firebase:如何处理实时更新
问题描述
我正在使用 react native + firebase。每次有新文档时,我都需要更新我的文档列表。所以我找到了有关“实时更新”和使用“onSnapshot”的信息:
let items = [];
firebase.firestore().collection("docs").onSnapshot(function(results) {
results.forEach((doc) => {
const item = doc.data()
if (item) {
items.push(item);
}
});
}, function(error) {
console.log(error)
})
如果我返回一个值 onSnapshot 将只运行一次的想法是让它监听变化,我应该如何实现呢?
解决方案
我了解到您正在使用 React Native Firebase 软件包 ( https://rnfirebase.io/ )
你是对的,有一个功能可以实时监听数据库的变化(例如,一个帖子的点赞数)。
在此处查看文档:Firestore 实时更改
这是文档中用于收听此类更改的建议代码:
function User({ userId }) {
useEffect(() => {
const subscriber = firestore()
.collection('Users')
.doc(userId)
.onSnapshot(documentSnapshot => {
console.log('User data: ', documentSnapshot.data());
});
// Stop listening for updates when no longer required
return () => subscriber();
}, [userId]);
}
根据我使用 React Native Firebase 的经验,实时更改效果很好。确保您的代码与官方文档中的说明一致,并且一切顺利。
希望能帮助到你。
推荐阅读
- scheme - Nested Recursion and McCarthy's 91 Function
- mongodb - MongoDB总和与匹配
- android - How to fix "java.lang.IndexOutOfBoundsException: Inconsistency detected."
- algorithm - Left to Right Alpha-Beta Pruning
- java - Some test cases satisfied while others not
- dialogflow-es - Dialogflow 上的上下文和回退
- django - 当外键不在当前模型中时,如何获取模型的查询集的值?
- windows - 批处理脚本后继续使用 CMD 命令
- keras - Keras:编译后更改 LSTM 参数 return_sequences=True
- r - 如何用断言器比较两列