Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 使用useEffect时复制socket.io侦听器_Sockets_Socket.io_React Hooks - Fatal编程技术网

Sockets 使用useEffect时复制socket.io侦听器

Sockets 使用useEffect时复制socket.io侦听器,sockets,socket.io,react-hooks,Sockets,Socket.io,React Hooks,当用户在侧边栏上选择对话时,对话名称将从后端发送回,并存储在名为conversationName的React状态中。我使用了useEffect来捕捉这种变化 还有一个套接字正在侦听事件名称conversationName,以获取新消息 我的问题是,当用户切换回特定会话时,发送的消息将被复制n次 例如,有两个对话称为A和B。他单击A,聊天一些消息,单击B,然后单击返回A。从现在起,他发送的任何消息都会重复两次 寻求一些建议,非常感谢各位 当效果再次激发时,您需要: React.useffect((

当用户在侧边栏上选择对话时,对话名称将从后端发送回,并存储在名为
conversationName
的React状态中。我使用了useEffect来捕捉这种变化

还有一个套接字正在侦听事件名称
conversationName
,以获取新消息

我的问题是,当用户切换回特定会话时,发送的消息将被复制n次

例如,有两个对话称为A和B。他单击A,聊天一些消息,单击B,然后单击返回A。从现在起,他发送的任何消息都会重复两次

寻求一些建议,非常感谢各位

当效果再次激发时,您需要:

React.useffect(()=>{
常量侦听器=(消息)=>{
//将列表消息推送到一个新的列表中
};
socket.on(会话名称,侦听器);
return()=>socket.off(conversationName,listener);
},[conversationName]);

非常感谢您!!
React.useEffect(() => {
    socket
      .on(conversationName, (message) => {
        // push into list messages a new one 
      });
  }, [conversationName]);