📌 Life cycle
React 컴포넌트는 생명 주기가 있다. 생애 주기 또는 라이프사이클(Life cycle)이라고도 많이 표현한다.
컴포넌트가 실행되거나 업데이트되거나 제거될 때, 특정한 이벤트들이 발생한다.
📌 Mount
컴포넌트가 처음 실행될 때 그것을 Mount라고 표현한다. 컴포넌트가 시작되면 우선 context, defaultProps와 state를 저장한다.
그 후에 componentWillMount 메소드를 호출하고, render로 컴포넌트를 DOM에 부착한 후 Mount가 완료되면 componentDidMount가 호출된다.
주의할 점 : componentWillMount에서는 props나 state를 바꾸면 안 된다. Mount 중이기 때문. 그리고 아직 DOM에 render하지 않았기 때문에 DOM에도 접근할 수 없다.
componentDidMount에서는 DOM에 접근할 수 있다. 그래서 여기에서는 주로 AJAX 요청을 하거나, setTimeout, setInterval같은 행동을 한다.
정리
- state, context, defaultProps 저장
- componentWillMount
- render
- componentDidMount
📌 Props Update
props가 업데이트될 때의 과정이다. 업데이트되기 전에 업데이트가 발생하였음을 감지하고, componentWillReceiveProps 메소드가 호출된다. 그 후 shouldComponentUpdate, componentWillUpdate가 차례대로 호출된 후, 업데이트가 완료(render)되면 componentDidUpdate가 된다.
이 메소드들은 첫 번째 인자로 바뀔 props에 대한 정보를 가지고 있다. componentDidUpdate만 이미 업데이트되었기 때문에 바뀌기 이전의 props에 대한 정보를 가지고 있다.
shouldcomponentUpdate에서는 아직 render하기 전이기 때문에 return false를 하면 render을 취소할 수 있다. 주로 여기서 성능 최적화를 한다.
📌 State Update
setState 호출을 통해 state가 업데이트될 때의 과정이다. props update와 과정이 같지만, componentWillReceiveProps 메소드는 호출되지 않는다. 그리고 메소드의 두 번째 인자로는 바뀔 state에 대한 정보를 가지고 있다. componentDidUpdate는 두 번째 인자로 바뀌기 이전의 state에 대한 정보를 가지고 있다.
- shouldComponentUpdate
- componentWillUpdate
- render
- componentDidUpdate
📌 Unmount
컴포넌트가 제거되는 것은 Unmount라고 표현한다. componentWillMount에서 주로 연결했던 이벤트 리스너를 제거하는 등의 여러 가지 정리 활동을 합니다.
- componentWillUnmount
다행히도 용도에 맞지 않는 메소드를 사용하면 React에서 자체적으로 에러 메시지를 띄워 줍니다. componentDidMount나 render에 setState를 사용한 경우도 에러 메시지를 띄웁니다.
'WIL' 카테고리의 다른 글
Mini Project (0) | 2023.05.14 |
---|---|
Axios (0) | 2023.05.07 |
React_State, Props (1) | 2023.04.23 |
DOM과 Virtual DOM, props와 state (0) | 2023.04.17 |
JavaScript_ES (0) | 2023.04.09 |