【发布时间】:2021-09-23 15:10:34
【问题描述】:
在以前的版本中,我会这样做:
// Declaring db reference
let ref = firebase.database().ref('features')
// Creating the listener
let listener = ref.on('value', snapshot => {
if(snapshot.val()){
// Reading data
}
}
// Unsubscribing
ref.off('value', listener)
在 Firebase 9.0.0 之后,我看到 onValue() 函数返回一个取消订阅回调:
/** A callback that can invoked to remove a listener. */
export declare type Unsubscribe = () => void;
因此,我目前的做法:
// Declaring db reference
let featuresRef = ref(db, 'features')
// Creating the listener
let unsubscribe = onValue(featuresRef, snapshot => {
if(snapshot.val()){
// Reading data
}
})
// Unsubscribing
unsubscribe()
我在函数定义中看到off() 函数仍然存在,并且根据documentation:
通过调用 Firebase 数据库引用的 off() 方法来移除回调。
是否需要使用返回的取消订阅回调函数或off() 函数来移除监听器?
【问题讨论】:
-
返回的函数和
off都可以用来移除监听器。您对其中任何一个都有问题吗? -
不,只是好奇这两种方法之间是否有任何区别。我会让取消订阅回调,因为它看起来更具可读性。
-
这正是在这个重大变化中引入它的原因。我们都更喜欢新模式,但不想完全删除旧的比喻。我会写一个快速的答案来结束。
标签: firebase firebase-realtime-database