2017-11-20 8 views
1

私は通常、親に子がunmountingあり、子自体がunmountではないと知っています。しかし、私はちょうどそれがunloading(ページを閉じる)がunmountイベントをトリガーしない理由が不思議です。このデザインの背後にある何か興味深い?私は周りを見回しましたが、今まで何も見つかりませんでした。ページを閉じてもコンポーネントがアンマウントされないのはなぜですか

ありがとうございました!

最高の願い、Hearen。

答えて

1

ページを閉じると、実際にはウェブページのレンダリングを処理するdiscard the main process/threadになります。その場合、実際には、そのメソッドを呼び出すスレッドは破棄されるため、アンマウントメソッドを呼び出す方法はありません。

+0

ありがとうございます。はい、あなたのポイントは正しいですが、実際には私のローカルテストでそれを知ることができます。ここで私が本当に知りたいのは、 'なぜ'が 'unmount'イベントをこのように実装するのかということです。このデザインに関連する特別なものはありますか? – Hearen

+1

反応アプリのライフサイクルでは、複数のコンポーネントがDOMに追加/削除されます。場合によっては、コンポーネントがDOMに追加されたときに、 'DataStore.on(" update "、this.updateData);のような' componentDidMount() 'メソッドにイベントリスナーを登録したいかもしれません。しかし、コンポーネントがDOMから削除されると、 'DataStore.removeListener(" update "、this.updateData);のように、これらのリスナーを' componentWillUnmount() 'で登録解除する必要があります。それ以外の場合は、アプリケーションでメモリリークが発生します。これは、reactが 'componentWillUnmount()'ライフサイクルイベントを提供した理由です。 –

関連する問題