我有这个useEffect,仅用于清洁:
useEffect(() => {
return function cleanup() {
if (!room || !currentPortal) return;
leavePortal(
room,
currentPortal,
currentUserProfile && currentUserProfile.uid
? currentUserProfile.uid
: uniqueId
);
detachListener();
};
}, [isFirstLoad, currentUserProfile, currentPortal]);
我可以来回移动,但效果很好,但是如果关闭了选项卡,则不会执行任何操作。那是useEffect的工作方式吗?它不会检测到标签关闭吗?
答案 0 :(得分:8)
useEffect
默认不会检测到选项卡关闭。
但是您可以自己实现:
useEffect(() => {
const cleanup = () => {
// do your cleanup
}
window.addEventListener('beforeunload', cleanup);
return () => {
window.removeEventListener('beforeunload', cleanup);
}
}, []);