[英]Firebase stop listening onAuthStateChanged
從版本 ^3.0.0 開始,我很難刪除身份驗證狀態更改偵聽器。
要根據文檔啟動偵聽器:
firebase.auth().onAuthStateChanged(function (user) {
// handle it
});
但是,我在文檔中找不到任何提到刪除身份驗證狀態更改偵聽器的地方。 Firebase.Auth 類上有一個特殊的函數,稱為removeAuthTokenListener
。 不幸的是,它沒有記錄( firebase docs reference )。
通過瀏覽器的 Web 控制台。
var auth = firebase.auth();
auth.removeAuthTokenListener;
打印一個接受一個參數的函數定義。 我嘗試執行以下操作:
this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);
但這沒有做任何事情。
根據文檔, onAuthStateChanged()
函數返回
觀察者的取消訂閱功能。
所以你可以:
var unsubscribe = firebase.auth().onAuthStateChanged(function (user) {
// handle it
});
然后:
unsubscribe();
Frank van Puffelen 已經很好地回答了這個問題,但這是我獲取用戶數據的 React 組件的用例。 這些組件需要在卸載組件時取消訂閱,否則每個組件都會出現內存泄漏。
React.useEffect(() => {
let unsubscribe;
const getUser = async () => {
unsubscribe = await firebase.checkUserAuth(user => setUser(user));
};
getUser();
return function cleanup() {
unsubscribe();
};
}, []);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.