【发布时间】:2020-11-17 05:34:29
【问题描述】:
我正在使用 react 功能组件来构建一个带有在线聊天的协作白板,但我收到了多个 console.log 消息,用于发送/接收一条消息。
经过一番搜索,我发现问题可能是因为我没有在componentDidMount() 或功能组件的等效项中声明我的套接字事件侦听器。
我的白板代码是这样的:
function WhiteBoardArea(props) {
// Declare useStates here
socket.on("canvas-change", newCanvasData => {
setCanvasData(newCanvasData)
});
//return something
};
如何正确设置此 socket.on() 方法,使其仅运行一次? (第一次渲染组件)。
【问题讨论】:
-
目前,您在每次重新渲染时都订阅了该事件。要仅在第一次渲染时执行此操作,您需要将其放入
useEffect挂钩中。会是这样的:useEffect(() => { /* Your Code */ }, []).