【发布时间】:2020-07-15 06:23:42
【问题描述】:
您好,我正在尝试使用 React 和 Socket.io 构建聊天应用程序。还有一部分是我从服务器向客户端发出“已加入”事件,让客户端知道他已成功加入房间,并发送房间的聊天记录。这是客户端处理“joined”事件的方式:
useEffect(() => {
socket.on('joined', (roomx) => { setCurrentRoom(roomx); setMessages(roomx.messages)});
}, [currentRoom]);
我将第二个参数 ([currentRoom]) 传递给 useEffect,因为如果我不这样做,“joined”将被调用 4 或 5 次。
我在 setCurrentRoom 回调中尝试了 console.logging 以查看是否正在调用 setCurrentRoom,如下所示:
setCurrentRoom(roomx, () => { console.log(currentRoom)};
但是,没有记录任何内容。
有人知道我在这里缺少什么吗?还是做错了?
【问题讨论】:
标签: reactjs socket.io setstate use-effect