我试图在用户关闭react中的标签时打开一个弹出窗口,使用以下代码:
useEffect(() => {
window.addEventListener('beforeunload',handleUnload );
return () => {
window.removeEventListener('beforeunload', handleUnload);
}
}, []);
const handleUnload = (e) => {
e.preventDefault();
console.log('hey')
alert("HEY");
}
有没有其他方法可以做到这一点,或者有没有什么方法可以纠正代码。目前,我正在尝试提醒用户。
3条答案
按热度按时间7z5jn7bk1#
尝试使用ref:
然后用这个打电话
fhg3lkii2#
欢迎来到SO!
我认为你无意中使用了
{}
破坏了你的函数。试试这个:
我已经将
[handleUnload]
添加到useEffect的第二个属性中,以防止它在每次状态更改时添加和删除事件侦听器。d6kp6zgx3#
我知道这不是OP所问问题的确切答案,但我在试图弄清楚如何仅在用户有未保存的更改时才提示时遇到了这个问题。最后,我用下面的代码实现了这个逻辑:
然后,您所要做的就是更新
hasUnsavedChanges
的值,无论您的应用程序当前是否有未保存的更改,它都会相应地提示。