생성
업데이트
제거
사라지기 전을 제외하고 매 중요한 순간마다 컴포넌트가 새로 렌더링(render)된다.
컴포넌트가 중요한 순간을 만날 때 클래스 컴포넌트안에 특별한 메소드를 사용할 수 있다. 이러한 메소드를 Life cycle method
라고 부른다.
Life cycle method
는 클래스 컴포넌트에서만 사용 가능하다.
componentDidMount
, componentDidUpdate
render
, constructor
에선 async/await
을 사용할 수 없는데 이 때 Life cycle method
를 이용하여 비동기 요청을 할 수 있다.componentWillUnmount
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<ToggleSwitch />
</div>
);
}
class ToggleSwitch extends React.Component {
constructor(props) {
super(props);
this.state = { isOn: false };
this.handleClick = this.handleClick.bind(this);
console.log('생성');
}
handleClick() {
this.setState((state) => ({ isOn: !state.isOn}))
}
componentDidMount() {
console.log('mount');//mount된 이후
}
componentDidUpdate() {
console.log('updated');
}
componentWillUnmount() {//unmount 되기 전
console.log('unmount');
}
render() {
console.log('렌더링');
return (
<div>
<button onClick={this.handleClick}>
{this.state.isOn ? 'ON' : 'OFF'}
</button>
</div>
)
}
}
ToggleSwitch
가 렌더링되면 constructor => render() => componentDidMount()
순서로 진행된다. 콘솔에는생성, 렌더링, mount
순서로 찍힌다.props
가 부모로부터 넘어오거나 setState()
가 호출되면 render()
가 다시 호출되는 것을 의미한다.New props or setState() => render() => DOM 업데이트 => componentDidUpdate()
순서로 진행된다. 콘솔에는 렌더링, updated
가 찍힌다.componentWillUnmount()
를 실행한다. 콘솔에는 unmount
가 찍힌다.