我有监听 Firebase 事件的 Vue 组件,我在安装它们时创建了 Firebase 引用/监听器。但是当用户离开该页面时,我想删除 beforeDestroy()
生命周期 Hook 中的所有监听器。这是删除 Firebase 引用/监听器的“正确”方法吗?
getFirebaseRef(path){
return firebase.database().ref(path)
},
beforeDestroy(){
// get firebase ref
let fbPath = `/projects/proj_${this.currentLessonId}/components/${this.component.id}`
this.getFirebaseRef(fbPath)
.then((ref) => {
// remove listener
ref.off("value", (snap) => {
})
ref.off("child_added", (snap) => {
})
ref.off("child_removed", (snap) => {
})
})
},
mounted(){
// get firebase ref
let fbPath = `/projects/proj_${this.currentLessonId}/components/${this.component.id}`
this.getFirebaseRef(fbPath)
.then((ref) => {
// add listener
ref.on("value", (snap) => {
doSomething1()
})
ref.on("child_added", (snap) => {
doSomething2()
})
ref.on("child_removed", (snap) => {
doSomething3()
})
})
},
最佳答案
您始终可以调用,但如果您在同一路径上有多个监听器,它会变得更加棘手。
ref.off("value")
监听器返回对该监听器的引用,所以我就是这样做的。
let listener = ref.on("value", function(snapshot){
//do something
}
ref.off("value", listener)
关于javascript - 删除/关闭 Firebase 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902759/