【发布时间】:2020-11-09 05:58:19
【问题描述】:
我想使用像这样的嵌套侦听器结构:
snapshotListeners() {
firestore()
.collectionGroup()
.where()
.onSnapshot({
error: //Handle error
next: firstSnapshot => {
firstSnapshot.docsChanges().forEach(change => {
//Data retrieved and used in the below query to get more data
firestore()
.collection()
.where() //using the data retrived from the above query here.
.onSnapshot({
error: //Handle error
next: secondSnapshot => {
secondSnapshot.docsChanges().forEach(change =>{
//More Data from second query
})
}
})
})
}
})
}
这是从Nesting firestore onSnapshot listeners in react-native?借来的sn-p
我不确定如何最好地跟踪外部侦听器触发时创建的侦听器。创建新的内部侦听器时,如何取消订阅以前的内部侦听器?覆盖旧监听器的变量会取消订阅吗?即
var unsubscribe = old_listener
unsubscribe = new_listener
// would this unsubscribe old listener?
如果没有,那么有什么好的方法来跟踪它们? Frank 暗示使用一个有意义的列表,但我是 Javascript 初学者,不知道如何实现它。我可以将每个新侦听器附加到一个列表中,但是我如何将它们作为取消订阅的函数调用?
【问题讨论】:
-
我正在使用 react 并认为我通过将 unsubscribe 函数存储在我的状态中得到了解决方案,该状态是用 null 变量构造的。每次触发外部侦听器时,都会调用状态,如果它为 null,则不执行任何操作,如果它包含侦听器分离函数,则取消订阅。然后用新的监听函数覆盖状态
标签: javascript firebase react-native google-cloud-firestore