React & Socket.io:如何在实际重定向之前检测用户何时重定向到另一条路由



Socket.io初学者。我正在使用react和socket.io构建一个练习聊天应用程序,我想知道当有人在被重定向之前点击另一条路线时,如何检测和发出事件。我会用它将它们从该房间的在线列表中删除,但不会像内置的断开连接那样到处删除。我已经搜索了其他问题,并尝试了下面的代码,但它只在初始装载时被调用

import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
function SomeComponent() {
const location = useLocation();
useEffect(() => {
console.log('Location changed');
}, [location]);
...
}

我在找类似的东西

useEffect(() => {
if(location.path !== currentPath) {
socket.emit('remove_user', {})
}
}, [something])

如果还没有,您可能需要将useEffect放在根组件上,例如App.js。试试看。

在这个例子中,我把它放在应用程序上,它工作得很好,但当我把它放到PostMain组件上时,它只在我导航到/发布时工作

最新更新