如何移除Firebase Realtime Database V9版本的实时监听器
你使用的refList.off()写法无法正确移除V9版本Firebase Realtime Database的监听器,该写法是V8及更早版本命名空间式API的用法,V9模块化API并未在ref实例上挂载off方法。
正确移除监听器有两种可选方案:
- 方案一(更推荐,可精准解绑单个监听器)
onValue调用后会返回一个解绑函数,你只需要提前存储该函数,需要移除监听器时直接执行即可。
代码示例:
const refList= ref( db, `users/${uid}` ); // 存储onValue返回的解绑函数 const unsubscribe = onValue(refList, (snapshot) => { let allData = snapshot.val() === null ? [] : snapshot.val() }); // 需要移除监听器时调用 unsubscribe()
- 方案二(移除指定ref上绑定的所有监听器)
如果需要清空某个ref上绑定的全部监听器,可以导入V9提供的off方法调用:
import { off } from "firebase/database"; // 移除refList上的所有监听器 off(refList)
内容的提问来源于stack exchange,提问作者aryankarim
相关产品推荐
相关产品推荐

