Reactjs 将socket.off(';roomName';)与socket.io和react native一起使用的最佳方法
我是socket.io新手,正在努力学习最佳实践 目前我只有一个屏幕,在那里我在react native上使用socket.io。我确信我将有几十个屏幕,在那里我将通过socket.io与我的API进行通信 据我所知,我必须删除套接字侦听器,如果用户离开屏幕(也称为组件卸载),否则,如果用户重新进入屏幕,我将从同一侦听器收到两次或更多消息Reactjs 将socket.off(';roomName';)与socket.io和react native一起使用的最佳方法,reactjs,react-native,socket.io,Reactjs,React Native,Socket.io,我是socket.io新手,正在努力学习最佳实践 目前我只有一个屏幕,在那里我在react native上使用socket.io。我确信我将有几十个屏幕,在那里我将通过socket.io与我的API进行通信 据我所知,我必须删除套接字侦听器,如果用户离开屏幕(也称为组件卸载),否则,如果用户重新进入屏幕,我将从同一侦听器收到两次或更多消息 useEffect(() => { console.log('component mounts -> listen message
useEffect(() => {
console.log('component mounts -> listen messages')
socketApi.io.on(chatId,message => {
setMessages({type:'add',value:JSON.parse(message)})
})
return () => {
console.log('component unmounts, stop listening the chatId')
socketApi.io.off(chat._id);
}
},[])
上面的代码块就像一个符咒。但是,如果我必须在每个组件中都这样做,每当我需要使用套接字时,我就会觉得我在这里遗漏了一些东西,从而简化了停止到处重复相同代码的过程
在每个组件的useEffect中不重复此模式的最佳实践是什么
我在考虑一个全局函数(甚至可能是全局useffect),其中我可以传递套接字的文件室名称,并使用回调来检索消息,每当组件卸载时,如果它有回调和文件室参数,它就会停止侦听
我怎样才能实现这样的目标