首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在useEffect中设置状态时不能访问状态

为什么在useEffect中设置状态时不能访问状态
EN

Stack Overflow用户
提问于 2022-08-19 09:46:49
回答 1查看 113关注 0票数 1

当组件呈现我用socket发送套接字发出以获取useEffect中的数据时,我还会侦听以获取数据。当我从套接字获得数据时,我更新状态,然后调用一个函数。在功能内部,状态是空的。为什么州是空的?

代码语言:javascript
复制
const [chatData, setChatData] = useState([]);

const handleData = () => {
console.log(chatData)
}

useEffect(() => {
    socket.emit("chatData");

    socket.on("chatData", (data) => {
    setChatData(data)
    handleData();
    });

    return () => {
      socket.off("chatData");
    };
  }, []);
EN

回答 1

Stack Overflow用户

发布于 2022-08-19 10:04:46

在这种情况下,React不能保证它会立即更新状态。但是,您可以将一个函数传递给setChatData,用于设置数据(在其中您可以调用函数),而不是值。例如:

代码语言:javascript
复制
socket.on("chatData", (data) => {
    setChatData(() => {
        handleData(data);
        return data;
    };
});

或者,正如有人在评论中说的那样,您可以使用另一个带有chatDatachatData挂钩作为依赖项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73414876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档