더북(TheBook)

이 코드를 componentDidMount()에 추가하여 이벤트 리스너를 등록하고, componentWillUnmount()에서 이벤트 리스너를 제거하는 코드를 작성해보자(ch05/note/jsx/note.jsx).

 

예제 코드 5.4 이벤트 리스너의 등록과 제거

class Note extends React.Component {
    confirmLeave(e) {
        let confirmationMessage = '정말 닫으시겠습니까?'
        e.returnValue = confirmationMessage     // Gecko, Trident, Chrome 34+
        return confirmationMessage              // Gecko, WebKit, Chrome <34
    }
    componentDidMount() {
        console.log('beforeunload 이벤트에 confirmLeave 이벤트 리스너 등록')
        window.addEventListener('beforeunload', this.confirmLeave)
    }
    componentWillUnmount() {
        console.log('beforeunload 이벤트에 confirmLeave 이벤트 리스너 제거')
        window.removeEventListener('beforeunload', this.confirmLeave)
    }
    render() {
        console.log('Render')
        return <div>
            <p>부모 컴포넌트는 {this.props.secondsLeft}초 뒤에 제거된다.</p>
            <input type="text" />
        </div>
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.