为什么在关闭窗口时没有触发 componentWillUnmount?

IT技术 javascript reactjs
2021-04-29 13:01:25

有人会认为componentWillUnmount()在关闭应用程序时会触发 in react。根据文档,componentWillUnmount()在卸载它或它的相关组件被销毁时触发。为什么不关闭窗口或选项卡卸载组件?

2个回答

如果可以,React 会这样做,但请想一想:关闭浏览器窗口意味着丢弃页面上的所有 HTML、CSS 和 JS。即使它进入了onbeforeunload事件,无论如何在它们即将被丢弃时卸载每个组件也是一种浪费,并且会减慢关闭页面的速度。历史上没有一种在选项卡关闭时运行任何代码的好方法。

但是,有一个名为Beacon API实验性API试图解决这个问题,如果您想在浏览器关闭时通过网络发送数据。

安装术语指的是在DOM操作。

生命周期方法是在组件的不同阶段执行的自定义功能。当组件被创建并插入到 DOM(安装)、组件更新以及组件从 DOM 中卸载或移除时,有一些方法可用

关闭窗口/选项卡会触发浏览器onbeforeunload事件

当窗口即将卸载其资源时会触发这些事件。

window.addEventListener("beforeunload", function(event) { ... });
window.onbeforeunload = function(event) { ... };