리액트 컴포넌트의 라이프 사이클은 크게 3가지로 나눌 수 있습니다.
-
마운팅
-
업데이트
-
언마운팅
마운팅 - 한 번 실행
constructor - 컴포넌트의 속성과 상태를 설정하는 단계입니다.
componentWillMount - 컴포넌트가 DOM에 삽입되기 전에 실행됩니다.
여기서 상태를 바꾸더라도 재랜더 되지 않습니다.
componentDidMount - 컴포넌트가 DOM에 삽입되고 난 후 실행됩니다.
DOM 반영 완료. 모든 엘리먼트에 접근 가능합니다.
서버 랜더링에서는 실행 안됩니다. Ajax 요청에 적당합니다.
업데이트 - 여러 번 실행
componentWillReceiveProps - 컴포넌트가 새로운 속성을 받을때 실행됩니다.
처음에는 실행되지 않습니다.
상위 속성이 바뀌었건 안바뀌었건 재랜더 되면 일단 실행됩니다. 리액트 입장에서는 속성이 변화되었는지 알수 없기 때문입니다.
새로운 속성을 파라미터로 받습니다.
shouldComponentUpdate - 컴포넌트가 갱신되는 조건을 정의해서 재랜더링을 최적화할 수 있습니다.
false 를 리턴하면 랜더 함수 호출을 하지 않게 됩니다.
componentWillUpdate - 컴포넌트가 랜더링되기 바로 직전에 실행됩니다.
해당 사이클에서 상태를 바꾸면 무한루프에 걸릴 수 있습니다.
개인적으로 componentDidUpdate 사이클을 사용하길 권합니다.
componentDidUpdate - 컴포넌트가 갱신된 후 실행됩니다.
언마운팅 - 한번 실행
componentWillUnmount - 컴포넌트가 갱신된 후에 실행됩니다.
컴포넌트에서 글로벌 이벤트를 걸었다면 이때 해제 해주면 됩니다.
마운팅 |
Props 갱신 |
State 갱신 |
forceUpdate |
언마운팅 |
constructor |
||||
componentWillMount |
||||
componentWillReceiveProps |
||||
shouldComponentUpdate |
shouldComponentUpdate |
|||
componentWillUpdate |
componentWillUpdate |
componentWillUpdate |
||
render |
render |
render |
render |
|
componentDidUpdate |
componentDidUpdate |
componentDidUpdate |
||
componentDidMount |
||||
componentWillUnmount |
+ componentDidCatch - 하위 컴포넌트에서 발생한 에러를 처리합니다.
리액트 공식문서에 설명이 잘 되어 있습니다.
참조 - 리액트 교과서 / 길벗
'개발 이야기 > React' 카테고리의 다른 글
1시간이면 준비되는 MobX (0) | 2020.01.31 |
---|---|
React Diffing Algorithm (0) | 2020.01.31 |
Redux (0) | 2019.08.26 |
React Router 설정 (0) | 2019.08.26 |