【发布时间】:2021-08-18 03:39:53
【问题描述】:
我有以下代码
const fetchCurrentUser = async () => {
let u = await firebase.auth().currentUser;
setUser(u)
console.log(user)
let prof = await firebase.firestore().collection('abc').doc(u.uid).get();
prof === null ? prof = await firebase.firestore().collection('efg').doc(u.uid).get() : null;
setUserProfile(prof);
console.log(u)
console.log(prof)
console.log(user)
console.log(userProfile)
}
useEffect(() => {
fetchCurrentUser();
}, [])
代码的输出是
someObject()
someObject()
null
null
当 u 和 prof 不为 null 并且就在我设置 user = u 和 profile = prof 的上方时,用户和配置文件如何为 null?
发生的事情是我第一次获得非空用户,然后用户变为空(没有任何操作)不知道这怎么可能。因为我正在获取的用户来自 firebase,所以它不应该在没有任何操作的情况下改变
【问题讨论】:
-
你的问题解决了吗?
-
@axtck 是的,我解决了我的问题。问题出在其他地方,但仅与此有关。所以我在做类似
//do something; setUser(a); if(user == null) //do something;的事情,问题是if(user==null)总是正确的,因为 setUser 是异步的,不会立即设置用户。我引入了一个局部变量,它得到了修复
标签: reactjs react-native expo hybrid-mobile-app use-effect