[英]cannot set state inside useEffect
我想使用反應鈎子為nickid
state 設置一個值。
數據庫中的UID有一個值,然后我設置了state和console.log,它顯示了null。
任何想法為什么?
我的代碼:
const [nickid, setNickid] = useState(null); //uid
useEffect(() => {
firebase.database().ref('/users/').orderByChild('user').equalTo(props.match.params.user).once('value').then(snapshot => {
if (snapshot.exists()){
var uid = Object.keys(snapshot.val())[0]; //uid has a value
setNickid({ nickid: uid });
console.log(nickid); // here is null
首先setState/setNickid
是異步的 function 所以你不會在它之后直接得到那個值
第二,改變這個
setNickid({ nickid: uid });
至
setNickid(uid);
setState 是異步的 function (不立即執行)如果你想在更改時控制台記錄 nickid
useEffect(()=>{
console.log(nickid)
},[nickid])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.