📢 이 문서는 다른 블로그의 글을 보강하여 작성된 문서입니다.
참고 및 출처 : React의 생명주기(Life Cycle) - zerocho.com
import React, { Component } from 'react';
import PropTypes from 'prop-types';
export default class Basic extends Component {
static propTypes = {
name: PropTypes.string.isRequired,
birth: PropTypes.number.isRequired,
lang: PropTypes.string,
};
static defaultProps = {
lang: 'Javascript',
};
static contextTypes = {
router: PropTypes.object.isRequired,
};
state = {
hidden: false,
};
componentWillMount() {
console.log('componentWillMount');
}
componentDidMount() {
console.log('componentDidMount');
}
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps');
}
shouldComponentUpdate(nextProps, nextState) {
console.log('shouldComponentUpdate');
return true / false;
}
componentWillUpdate(nextProps, nextState) {
console.log('componentWillUpdate');
}
componentDidUpdate(prevProps, prevState) {
console.log('componentDidUpdate');
}
componentWillUnmount() {
console.log('componentWillUnmount');
}
onClickButton = () => {
this.setState({ hidden: true });
this.refs.hide.disabled = true;
}
render() {
return (
<div>
<span>저는 {this.props.lang} 전문 {this.props.name}입니다!</span>
{!this.state.hidden && <span>{this.props.birth}년에 태어났습니다.</span>}
<button onClick={this.onClickButton} ref="hide">숨기기</button>
<button onClick={this.context.router.goBack}>뒤로</button>
</div>
);
}
}
componentWillMount
――― 컴포넌트가 장착될 예정입니다componentDidMount
――― 정상적으로 장착되었습니다, DOM 접근 가능한 단계구요componentWillReceiveProps
――― props를 받을 예정입니다shouldComponentUpdate
――― 컴포넌트를 업데이트 해야합니다componentWillUpdate
――― 컴포넌트가 업데이트 될 예정입니다componentDidUpdate
――― 업데이트 완료 + 👀 이전 props를 알고있습니다
shouldComponentUpdate
――― 컴포넌트를 업데이트 해야합니다componentWillUpdate
――― 컴포넌트가 업데이트 될 예정입니다componentDidUpdate
――― 업데이트 완료componentWillUnmount
――― 제거예정 "이 다음 사이클은 없어요, 제거된 후 이벤트 발생할 수 없으니까요"
componentDidCatch(error, info) {
console.error(error, info);
}