Javascript 为什么';关闭窗口时,t组件是否将卸载触发器?

Javascript 为什么';关闭窗口时,t组件是否将卸载触发器?,javascript,reactjs,Javascript,Reactjs,人们可能会认为在关闭应用程序时会触发in react。根据文档,卸载组件或销毁其相关组件时会触发组件willunmount()。为什么不关闭窗口或选项卡卸载组件?引用DOM上的操作 生命周期方法是在组件的不同阶段执行的自定义功能当创建组件并将其插入DOM(装入)时,当组件更新时,以及当组件卸载或从DOM中删除时,有一些方法可用 关闭窗口/选项卡将启动浏览器: 这些事件在窗口即将卸载其资源时触发 如果可能的话,React会这样做,但是想想看:关闭浏览器窗口意味着放弃页面上的所有HTML、CSS和J

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

引用DOM上的操作

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

关闭窗口/选项卡将启动浏览器:

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


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


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

这是有道理的。那么,卸载组件的用例是什么?关于生命周期的方法有很多,但是没有多少用例能够证明生命周期的必要性。比如说,您有一个组件,它每隔一段时间就会在
setInterval
处理程序中获取一些数据。当组件卸载时,您希望停止该操作,
componentWillUnmount
是调用
clearInterval
的最佳位置。
window.addEventListener("beforeunload", function(event) { ... });
window.onbeforeunload = function(event) { ... };