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{
}
})
}, [])
添加回答
舉報