javascript - 删除/关闭 Firebase 监听器

标签 javascript firebase firebase-realtime-database vue.js

我有监听 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/

相关文章:

javascript - Uncaught Error : Service database is not available firebase javascript

javascript - 如果不兼容则隐藏范围输入

javascript - 在 chrome 开发工具中调试本地 nodejs 脚本

javascript - SCEditor 插入符号位于 iframe 内容可编辑的末尾

swift - Firebase:根据用户访问不同部分

java - Firebase:如何在不更新/删除子子项的情况下为子项设置值?

javascript - 减少 HTML 代码的长度

firebase - Flutter Firebase 分析 : Track page changes with onGenerateRoute

node.js - Firebase:如何从 Android 和 iOS 验证 Google 登录 token ID

FirebaseAnimatedList 实时改变内容