React:从未调用过清理函数

我正在构建一个使用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