ReactJS는 라이프 사이클을 가지고 있습니다.
안드로이드 작업은 해본 분들이라면 매우 익숙한 개념일 텐데요.
오늘은 이것에 대해서 정리해 보도록 하겠습니다.
1.LifeCycle
ReactJS의 사이클은 크게 3가지로 나뉘는 데요.
mounting |
처음으로 render가 될 대 호출됩니다. 이 과정에서 또 3가지 라이프 사이클 메소드가 호출되는데요. 아래의 3가지 메소드가 차례대로 호출되어 집니다. - componentWillMount : 가장 먼저 실행되는 메소드로, render메소드를 호출하기 바로 전에 호출되어 집니다. 순서상 가장 먼저 실행되지만, 최초에 한번만 실행하므로 반복해서 render를 호출할 경우 처음에만 호출되어 집니다. this.setState을 호출할 수 있습니다. - render - componentDidMount: render가 호출되어서 html로 UI를 그려지고 나서 호출되어집니다. UI가 다 그려지고 나서 호출되므로, 여러가지 작업을 하기 좋은 타이밍을 제공합니다. 예를 들면, setTimeout이나 setInterval같은 메소드를 통해서 타이머를 set한다든지, Ajax호출을 한다든지의 경우가 그렇습니다. |
updating |
컴포넌트는 두번째 render가 호출될 때 업데이트를 하는데요. mounting때와 마찬가지로 이 사이클에서도, 호출되는 메소드들이 있는데요. - componentWillReceiveProps : 메소드 이름처럼 props를 받게 되면 호출이 된다는 점이 특징입니다. 업데이트가 렌더되기 전에, 인자로 nextProps를 받아올 수 있으므로 값을 미리 체크해서, 특정 threshold를 넘어설 경우에만 this.setState를 호출해서 업데이트를 할 것인지 정할 수 있습니다. - shouldComponentUpdate : 메소드 네임에 should가 들어가 있는 것을 보면 알 수 있지만, 계속 업데이트를 할 것인지 true혹은 false를 반환해 주어야 합니다. false가 return되면 나머지 메소드들은 호출되지 않습니다. 이 메소드는 state와 props를 모두 인자로 받아오는데요. nextProps와 nextState 이름으로 값들을 받아 옵니다. 그래서 이 값들이 변하였는지 확인한 후에, 변한 경우에만 true를 반환해서 다음 업데이트 메소드가 호출되서 render되도록 할 수 있습니다.
- componentWillUpdate : shouldComponentUpdate와 마찬가지로 nextprops와 nextState값을 인자로 받아올 수 있습니다. 주어진 props나 state값에 따라서, 화면컬러나 사이즈등에 따른 변화등을 주기에 좋은 위치입니다. - render - componentDidUpdate : render가 끝나고, html들이 로딩이 되었을 때 실행되는 메소드입니다. 이번에는 next가 아닌, prevProps와 prevState값이 인자로 전달됩니다. componentWillUpdate와 같이 React 컴포넌트와는 직접적으로 관련되지 않은 부분들에 관한 작업을 하기 좋은 위치입니다. 렌더링 된 후에 할 것인지가 둘의 차이라고 할 수 있겠습니다. |
unmounting |
컴포넌트가 dom에서 제거 되기 직전에 호출되어 집니다. 여기서 호출되는 메소드는 단 하나인데요. componentWillUnmount 입니다. 다시 초기화 해놓아야 하는 값이 있다면, 여기서 처리하면 좋습니다. 여기서도 prevProps와 prevState값을 인자로 넘겨 받을 수 있습니다. 무언가 setInterval과 같이 주기적으로 실행을 하던 것을 멈추기에도 좋은 위치이네요. 참고로 clearInterval에 대한 레퍼런스는 아래 링크를 참조해 주세요. https://www.w3schools.com/jsref/met_win_clearinterval.asp |
위에서 언급한 LifeCycle 중에서,
shouldComponentUpdate()을 예로 들면 다음과 같이 할 수 있습니다.
nextProps와 nextState를 인자로 받아서 변경된 값이 있으면 return true를 할 수 있는데요.
아래에서는 nextProps로 기존 props의 값과 변경된 값이 있으면 true가 나오도록 하였습니다.
2. 정리
어떤 앱을 만드느냐에 따라서는 ReactJS의 라이프사이클을 이용하면,
효율적으로 코딩을 할 수 있겠네요.
라이프 사이클과 관련한 정보는 이 글에서 계속 업데이트 하도록 하겠습니다.
'ReactJS' 카테고리의 다른 글
ReactJS 에서 form사용하기 (0) | 2019.02.09 |
---|---|
React.js Component의 State에 대해서 정리해 보겠습니다. (0) | 2019.02.08 |
ReactJS Component의 Props에 대한 정리 (0) | 2019.02.07 |
ReactJS 다른 파일에서 Export하고 import해 오기 (0) | 2019.02.06 |
ReactJS 의 Component에 대해서 정리해 보겠습니다. (0) | 2019.02.05 |