我正在构建一个使用Firebase和Firestore的react应用程序。
我使用onSnapshot
函数,以便从Firestore获取实时数据,但我想知道如何删除该侦听器。
是的,我知道,我必须使用useEffect钩子的清理功能,但我不能让它工作,这是我的代码:
useEffect(() => {
let removeListener = getCanzoni(utente).onSnapshot(function (querySnapshot) {
let promises = querySnapshot.docs.map(async function (doc) {
let canzone = doc.data();
canzone.id = doc.id;
return canzone;
});
Promise.all(promises).then((canzoni) => {
cambiaCanzoni(canzoni);
});
return function cleanup() {
console.log("Removed Listener");
removeListener();
};
});
}, []);
getCanzoni
函数是从另一个文件导入的,它的定义是:
export function getCanzoni(utente) {
return firestore
.collection("Canzoni")
.where("utente", "==", utente.uid)
.orderBy("data", "desc");
}
当我删除组件时,在控制台中看不到“已删除的侦听器”。我知道当依赖数组改变或组件被卸载时,会调用清理函数。
有什么想法或小贴士吗?
转载请注明出处:http://www.yixue91.com/article/20230526/1251501.html