2 回答
TA贡献1846条经验 获得超7个赞
您的使用setUserID(user.uid)不会立即导致userID变量包含新值。它只会在组件下次渲染时(而不是这次即将渲染)包含该新值。
如果您想在立即出现的数据库查询中使用用户的 UID,则需要在本地使用它的值。
const uid = user.uid
setUserID(uid)
firebase.database().ref("users/"+ uid +"/public/profile/pic").on("value", (snapshot)=>{
setPfp(snapshot.val().pfpUrl)
})
看到这uid是一个局部变量,其值可以立即在查询中使用。
TA贡献1836条经验 获得超13个赞
首先,您需要在内部执行代码useEffect,因为每当您设置状态时,api 都会继续触发 api 调用。请参阅下面的代码并尝试在控制台中显示您的值以验证其来自后端。
useEffect(() => {
firebase.auth().onAuthStateChanged((user)=>{
if(user){
setUserID(user.uid)
firebase.database().ref("users/"+user.uid+"/public/profile/pic").on("value", (snapshot)=>{
setPfp(snapshot.val().pfpUrl)
})
}else{
}
})
}, [])
添加回答
举报