【问题标题】:Why closing a page does not unmount the component为什么关闭页面不会卸载组件
【发布时间】:2018-05-03 06:19:37
【问题描述】:

我知道父母通常有unmounting 孩子,而unmount 孩子本身是不行的。但我只是好奇为什么unloading(关闭页面)不会触发unmount事件。这个设计背后有什么有趣的东西吗?我环顾四周,但直到现在一无所获。

感谢您在此处提供的任何想法!

祝你好运,赫伦。

【问题讨论】:

    标签: reactjs onbeforeunload unmount


    【解决方案1】:

    关闭页面实际上将discard the main process/thread 处理网页的呈现。在这种情况下,实际上没有办法调用卸载方法,因为调用该方法的线程被丢弃了。

    【讨论】:

    • 谢谢。是的,您的观点是正确的,但实际上我可以通过本地测试知道。这里我真正想知道的是why react 以这种方式实现unmount 事件。这个设计有什么特别的地方吗?
    • 在 React 应用程序的生命周期中,多个组件将被添加到 DOM 中/从 DOM 中移除。在某些情况下,您可能希望在将组件添加到 DOM 时在 componentDidMount() 方法中注册事件侦听器,例如 DataStore.on("update", this.updateData);。但是,当组件从 DOM 中移除时,必须在 componentWillUnmount() 中取消注册这些侦听器,例如 DataStore.removeListener("update", this.updateData);。否则会在您的应用程序中发生内存泄漏。这就是为什么 react 提供了一个 componentWillUnmount() 生命周期事件。
    猜你喜欢
    • 2014-06-21
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多