簡體   English   中英

無法在 useEffect 內部設置 state

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM