javascript - React setState 没有更新状态
问题描述
我读到 setState 是异步的,但我在这里看不到这种情况,因为我可以在控制台上记录“particip”。所有其他 setStates 都在工作。我不明白为什么只有 setParticipants 没有做任何事情。在他开始时,我认为因为“参与”是一个对象数组,所以我做错了。后来我尝试使用简单的字母和数字来查看状态是否会更新。令我惊讶的是,没有发生任何事情,坦率地说,我不明白为什么。
const [participants, setParticipants] = useState();
useEffect(() => {
const socket = io(BASE_URL);
setSocket(socket);
socket.on("msgToClient", (msg) => {
setChat((chat) => [...chat, { ...msg }]);
});
socket.on("joinedRoom", (particip) => {
console.log(particip);
setParticipants(particip);
console.log(participants);
});
socket.on("leftRoom", (particip) => {
console.log(particip);
setParticipants(particip);
console.log(participants);
});
}, []);
解决方案
推荐阅读
- unity3d - Unity 2020.1.0f1(方法'System.Void的IL2CPP错误)错误
- python - 如何在 python 中使用 selenium 选择文本框
- javascript - 如何自动切换标签
- ios - 将表格视图快速添加到表格视图单元格中的问题
- angular - 如何在角离子中使用摘要身份验证发送请求
- android-studio - Android Studio - 媒体播放器:如何防止声音重叠?
- c - Linux 上的 system-uuid (Ubuntu 20.04)
- python-3.x - 使用基于键列的python合并文本文件中的重复行
- javascript - 如何一键打开一个新的html页面和一个链接
- j - 将序数列添加到 J 中自定义动词的输出