前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React技巧之处理tab页关闭事件

React技巧之处理tab页关闭事件

作者头像
chuckQu
发布2022-08-19 16:05:51
1.8K0
发布2022-08-19 16:05:51
举报
文章被收录于专栏:前端F2E

原文链接:https://bobbyhadz.com/blog/react-handle-tab-close-event[1]

作者:Borislav Hadzhiev[2]

正文从这开始~

总览

在React中,处理浏览器tab页关闭事件:

  1. 使用useEffect钩子添加事件监听器。
  2. 监听beforeunload事件。
  3. 在即将卸载tab页时,会触发beforeunload事件。
代码语言:javascript
复制
import {useEffect} from 'react';

const App = () => {
  useEffect(() => {
    const handleTabClose = event => {
      event.preventDefault();

      console.log('beforeunload event triggered');

      return (event.returnValue = 'Are you sure you want to exit?');
    };

    window.addEventListener('beforeunload', handleTabClose);

    return () => {
      window.removeEventListener('beforeunload', handleTabClose);
    };
  }, []);

  return (
    <div>
      <h2>hello world</h2>
    </div>
  );
};

export default App;

我们在useEffect钩子中为window对象添加了一个事件监听器。我们为useEffect钩子传递一个空的依赖数组,所以只会当组件挂载时运行。

beforeunload

当窗口或者tab页即将被卸载时,beforeunload事件会被触发。这时,页面仍然是可见的,事件仍然是可以取消的。

这使我们能够打开一个对话框,询问用户是否真的想离开该页面。

用户可以确认并导航到新的页面,或者取消导航。需要注意的是,并不确定事件会被触发。比如说,用户可以在其浏览器设置中禁用弹出窗口。

我们使用addEventListener方法在window对象上添加一个事件监听器。该方法接受的第一个参数是要监听的事件的类型,第二个参数是一个函数,当指定类型的事件发生时被调用。

我们从useEffect钩子返回的函数在组件卸载时被调用。我们使用removeEventListener方法来移除我们之前注册的事件监听器。

清理步骤很重要,因为我们要确保我们的应用程序中没有任何内存泄漏。

总结

我们介绍了如何处理tab页关闭事件,主要是通过beforeunload事件进行监听,并在回调事件里做相应的逻辑处理。需要注意的是,需要在组件卸载时,取消对事件的监听,防止内存泄漏情况的发生。

参考资料

[1]

https://bobbyhadz.com/blog/react-handle-tab-close-event: https://bobbyhadz.com/blog/react-handle-tab-close-event

[2]

Borislav Hadzhiev: https://bobbyhadz.com/about

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总览
  • beforeunload
  • 总结
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档