【发布时间】:2018-05-03 06:19:37
【问题描述】:
我知道父母通常有unmounting 孩子,而unmount 孩子本身是不行的。但我只是好奇为什么unloading(关闭页面)不会触发unmount事件。这个设计背后有什么有趣的东西吗?我环顾四周,但直到现在一无所获。
感谢您在此处提供的任何想法!
祝你好运,赫伦。
【问题讨论】:
标签: reactjs onbeforeunload unmount
我知道父母通常有unmounting 孩子,而unmount 孩子本身是不行的。但我只是好奇为什么unloading(关闭页面)不会触发unmount事件。这个设计背后有什么有趣的东西吗?我环顾四周,但直到现在一无所获。
感谢您在此处提供的任何想法!
祝你好运,赫伦。
【问题讨论】:
标签: reactjs onbeforeunload unmount
关闭页面实际上将discard the main process/thread 处理网页的呈现。在这种情况下,实际上没有办法调用卸载方法,因为调用该方法的线程被丢弃了。
【讨论】:
why react 以这种方式实现unmount 事件。这个设计有什么特别的地方吗?
componentDidMount() 方法中注册事件侦听器,例如 DataStore.on("update", this.updateData);。但是,当组件从 DOM 中移除时,必须在 componentWillUnmount() 中取消注册这些侦听器,例如 DataStore.removeListener("update", this.updateData);。否则会在您的应用程序中发生内存泄漏。这就是为什么 react 提供了一个 componentWillUnmount() 生命周期事件。