2017-11-20 15 views
1

일반적으로 부모에있는 자식이 unmounting이고 그 자체가 자식이 unmount이 아닙니다. 그러나 나는 단지 그것에 대해 궁금해서 unloading (페이지를 닫음)이 unmount 이벤트를 유발하지 않을 것입니다. 이 디자인의 뒤에 재미있는 무엇인가? 나는 주변을 둘러 보았으나 지금까지 아무것도 발견하지 못했다.페이지를 닫지 않아도 구성 요소가 마운트 해제되지 않는 이유

여기에 제공된 아이디어를 제공해 주셔서 감사합니다.

안녕하세요.

답변

1

페이지를 닫으면 실제로 웹 페이지의 렌더링을 처리하는 discard the main process/thread이됩니다. 이 경우, 실제로는, 그 메소드를 호출하는 thread가 파기되기 (위해) 때문에, unmounting 메소드를 호출 할 방법은 없습니다.

+0

감사합니다. 예, 당신의 요지는 맞습니다. 그러나 사실 저는 제 로컬 테스트로 그것을 알 수 있습니다. 여기서 진정으로 알고 싶은 것은'왜'unmount' 이벤트를 이런 식으로 구현하는 것입니다. 이 디자인과 관련된 특별한 것이 있습니까? – Hearen

+1

반응 앱의 라이프 사이클에서 여러 구성 요소가 DOM에 추가/삭제됩니다. 어떤 경우에는 컴포넌트가 DOM에 추가 될 때'DataStore.on ("update", this.updateData);와 같은'componentDidMount()'메소드에 이벤트 리스너를 등록 할 수 있습니다. 그러나 구성 요소가 DOM에서 제거 될 때 반드시'DataStore.removeListener ("update", this.updateData);와 같은 'componentWillUnmount()'에서 이러한 리스너를 등록 취소해야합니다. 그렇지 않으면 응용 프로그램에서 메모리 누수가 발생합니다. 이것이 반응이'componentWillUnmount()'라이프 사이클 이벤트를 제공 한 이유이다. –