【发布时间】:2021-07-30 14:09:35
【问题描述】:
我对 useEffect 有疑问。当我尝试在onAuthStateChanged 之后获取用户的身份验证状态时,useEffect 中的调用次数非常高。有时它也会给出这个错误:
警告:无法对未安装的组件执行 React 状态更新。这是一个无操作,但表明您的应用程序中存在内存泄漏。要修复,请在 useEffect 清理函数中取消所有订阅和异步任务
This is the amount of logs after the user login/registers and logout。也许我不太了解 useEffect 是如何工作的。这是使用useEffect的代码:
useEffect(async () => {
let isCancelled = false;
await firebase.auth().onAuthStateChanged(async (user) => {
if (user && !isCancelled) {
await firebase
.firestore()
.collection('users')
.doc(user.uid)
.get()
.then((document) => {
const userData = document.data()
console.log(document.data())
setUser(userData);
setIsSignedIn(true);
setLoading(false);
})
.catch((error) => {
setLoading(false);
alert(error)
});
}else{
console.log('user does not exist')
setIsSignedIn(false);
setLoading(false);
}
});
return () => {
isCancelled = true;
}
}, []);
【问题讨论】:
标签: reactjs firebase react-native firebase-authentication use-effect