React useEffect 卸载清理问题
React useEffect unmount cleanup issue
所以我有一个组件 运行 一个带有一些 socket.io 清理功能的 useEffect 函数。
当组件初始化时,它会初始化但会立即运行 socket.disconnect()。理想情况下,它应该只在我离开该页面时断开连接,但现在只需打开带有组件的页面即可初始化套接字并立即关闭连接,从而停止接收进一步广播的网络应用程序。我是 React 的新手,正在尝试获取一个了解为什么组件认为它已卸载但在 DOM?
上清晰可见
在 useEffect 中添加 socket.connect() 也没有解决问题:( 它只是保持断开状态。
useEffect(()=> {
socket.on("abc", (xy)=> "do something")
return socket.disconnect()}, [])
您的效果应该返回一个函数。
像这样尝试,
useEffect(() => {
socket.on("abc", (xy)=> "do something");
return (() => {
socket.disconnect()
})
}, [])
所以我有一个组件 运行 一个带有一些 socket.io 清理功能的 useEffect 函数。
当组件初始化时,它会初始化但会立即运行 socket.disconnect()。理想情况下,它应该只在我离开该页面时断开连接,但现在只需打开带有组件的页面即可初始化套接字并立即关闭连接,从而停止接收进一步广播的网络应用程序。我是 React 的新手,正在尝试获取一个了解为什么组件认为它已卸载但在 DOM?
上清晰可见在 useEffect 中添加 socket.connect() 也没有解决问题:( 它只是保持断开状态。
useEffect(()=> {
socket.on("abc", (xy)=> "do something")
return socket.disconnect()}, [])
您的效果应该返回一个函数。 像这样尝试,
useEffect(() => {
socket.on("abc", (xy)=> "do something");
return (() => {
socket.disconnect()
})
}, [])