简体   繁体   English

无法在 useEffect 内部设置 state

[英]cannot set state inside useEffect

I'd like to set a value to nickid state using react hooks.我想使用反应钩子为nickid state 设置一个值。

UID from database has a value, then I set the state and console.log after it, it shows null.数据库中的UID有一个值,然后我设置了state和console.log,它显示了null。

any ideas why?任何想法为什么?

My code:我的代码:

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

First thing setState/setNickid is async function so you will not get direct that value right after it首先setState/setNickid是异步的 function 所以你不会在它之后直接得到那个值

Second , change this第二,改变这个

setNickid({ nickid: uid });

To

setNickid(uid);

WORKING DEMO 工作演示

setState is async function (does not execute immediately) if you want to console log nickid when it is changed setState 是异步的 function (不立即执行)如果你想在更改时控制台记录 nickid

useEffect(()=>{
  console.log(nickid)
},[nickid])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM