反应状态未随套接字更新

问题描述 投票:0回答:1

这是我的简单反应组件: `const PlayersOnline = () => { const 套接字 = useSocket();

const [onlinePlayers, setOnlinePlayers] = useState(1);

socket.on("online_players", (data) => {
    console.log("data coming ----", data);
    setOnlinePlayers(() => {
        console.log("state----", data);

        return data;
    });
});

return (
    <div className="playersOnline">
        <p>Online: {onlinePlayers}</p>
    </div>
);

};`

正在使用整个组件的上下文来创建和使用套接字实例。我还放下了两个控制台,一个在“online_players”回调中,另一个在返回数据之前。 套接字连接没有问题,它在第一次渲染时更新状态没有任何问题,但是当我转到未使用该组件的另一个页面并返回到此时,套接字事件触发,我可以看到日志“数据即将到来 --- " 带有值,但之后 setState 代码不会执行。有人可以指出此问题的修复方法,为什么它无法执行整个代码,它不会给出任何错误。

我还使用了 useEffect 方法,但这让事情变得更糟,因为它甚至不让套接字事件触发。

reactjs socket.io
1个回答
0
投票

我的错。我从服务器以错误的顺序发送了两个事件,调整该顺序修复了它。

现在已经解决了。

但我仍然想知道为什么代码到达第一个 console.log 行而不执行下一行而没有任何中断或任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.