简体   繁体   English

无法在 useEffect 挂钩内设置 state

[英]cannot set state inside useEffect hook

I can see response object containing array of users, but it seems setState doesn't work inside useEffect() hook.我可以看到响应 object 包含用户数组,但似乎 setState 在useEffect()钩子中不起作用。

This is request code.这是请求代码。

     const [users,setUsers] = useState([]);
     const getUsers=async()=>{
         await axios.get(API_URL,{
             headers:{
                 'Content-Type': 'application/json',
                     'Accept': 'application/json',
                     'Access-Control-Allow-Origin': '*'
             }
         })
         .then((res)=>{
            const data = res.data.users;
             console.log(data);
            setUsers([...users,data]);
            console.log(users);
            
         })
         .catch((err)=>{
             console.log(err);
         })
     }
     useEffect(()=>{
         
         getUsers();
     },[])

setUsers() is the asynchronous method, and you can't get the updated value of users immediately after setusers() . setUsers()是异步方法,不能在setusers()之后立即获取users的更新值。

setUsers([...users,data]);
console.log(users); // This will console old value of users

You should use useEffect with adding a users dependency to check the updated value of users .您应该使用useEffect并添加users依赖项来检查users的更新值。

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

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

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