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]);