Jam*_*ist 41 javascript firebase firebase-authentication
从版本^ 3.0.0开始,我很难删除身份验证状态更改侦听器.
要根据文档启动监听器:
firebase.auth().onAuthStateChanged(function (user) {
// handle it
});
Run Code Online (Sandbox Code Playgroud)
但是,我在文档中找不到任何引用删除身份验证状态更改侦听器的内容.Firebase.Auth类有一个特殊的功能叫做removeAuthTokenListener.不幸的是,它没有记录(firebase文档参考).
通过浏览器的Web控制台.
var auth = firebase.auth();
auth.removeAuthTokenListener;
Run Code Online (Sandbox Code Playgroud)
打印一个带有一个参数的函数定义.我试着做以下事情:
this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);
Run Code Online (Sandbox Code Playgroud)
但那没有做任何事情.
Fra*_*len 88
根据文档,onAuthStateChanged()函数返回
观察者的取消订阅功能.
所以你可以:
var unsubscribe = firebase.auth().onAuthStateChanged(function (user) {
// handle it
});
Run Code Online (Sandbox Code Playgroud)
然后:
unsubscribe();
Run Code Online (Sandbox Code Playgroud)
Frank van Puffelen 已经很好地回答了这个问题,但这是我获取用户数据的 React 组件的用例。当组件被卸载时,这些组件需要取消订阅,否则每个组件都会出现内存泄漏。
React.useEffect(() => {
let unsubscribe;
const getUser = async () => {
unsubscribe = await firebase.checkUserAuth(user => setUser(user));
};
getUser();
return unsubscribe;
}, []);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21075 次 |
| 最近记录: |