📖 리액트/리액트를 다루는 기술

7장 컴포넌트의 라이프사이클 메서드

놀러와요 버그의 숲 2022. 1. 25. 16:51
728x90
반응형

이 글은 『리액트를 다루는 기술』(개정판/ 김민준 저 / 길벗 출판사)이라는 책을 참고하여 썼습니다.

 

학습 범위:  p172 ~p.188

 

새로 알게된 사실

 

1. 모든 리액트 컴포넌트에는 라이프사이클(생명주기)이 존재한다.

 

2. 컴포넌트의 수명은 페이지에 렌더링되기 전인 준비과정에서 시작하여 페이지에서 사라질 때 끝난다.

 

3. 라이프사이클 메서드는 컴포넌트 상태에 변화가 있을 때마다 실행하는 메서드이다.

 

4. Will 접두사가 붙은 메서드는 어떤 작업을 작동하기 전에 실행되는 메서드이다.

 

5. Did 접두사가 붙은 메서드는 어떤 작업을 작동 한 후에 실행되는 메서드이다.

 

6. 라이프 사이클은 총 세가지, 마운트, 업데이트, 언마운트 카테고리로 나뉜다.

 

 

※중간정리

 

마운트

 

 constructor: 컴포넌트를 새로 만들 때마다 호출되는 클래스 생성자 메서드입니다.

(이것은 컴포넌트의 생성자 메서드로 컴포넌트를 만들 때 처음으로 실행된다. 이 메서드에서는 초기 state를 정할 수 있다.)

 

 getDerivedStateFromProps: props에 있는 값을 state에 넣을 때 사용하는 메서드입니다.

(props로 받아온 값을 state로 동기화시키는 용도. 컴포넌트가 마운트될때와 업데이트될 때 호출)

 

 render: 우리가 준비한 UI를 렌더링하는 메서드입니다.

 

 componentDidMount: 컴포넌트가 웹 브라우저상에 나타난 후 호출하는 메서드입니다.

(이것은 컴포넌트를 만들고 첫 렌더링을 다 마친 후에 실행된다. 이 안에서 다른 JS 라이브러리 또는 프레임워크의 함수를 호출하거나

이벤트 등록, setTimeout, setInterval, 네트워크 요청 같은 비동기 작업을 처리하면 된다.)

 

 

 

업데이트

▲ 그림 7-3 업데이트할 때 호출하는 메서드

 

 getDerivedStateFromProps: 이 메서드는 마운트 과정에서도 호출되며, 업데이트가 시작하기 전에도 호출됩니다. props의 변화에 따라 state 값에도 변화를 주고 싶을 때 사용합니다.

 shouldComponentUpdate: 컴포넌트가 리렌더링을 해야 할지 말아야 할지를 결정하는 메서드입니다. 이 메서드에서는 true 혹은 false 값을 반환해야 하며, true를 반환하면 다음 라이프사이클 메서드를 계속 실행하고, false를 반환하면 작업을 중지합니다. 즉, 컴포넌트가 리렌더링되지 않습니다. 만약 특정 함수에서 this.forceUpdate() 함수를 호출한다면 이 과정을 생략하고 바로 render 함수를 호출합니다.

 render: 컴포넌트를 리렌더링합니다.

 getSnapshotBeforeUpdate: 컴포넌트 변화를 DOM에 반영하기 바로 직전에 호출하는 메서드입니다.

 componentDidUpdate: 컴포넌트의 업데이트 작업이 끝난 후 호출하는 메서드입니다.

 

 

언마운트

마운트의 반대 과정, 즉 컴포넌트를 DOM에서 제거하는 것을 언마운트(unmount)라고 합니다.

▲ 그림 7-4 언마운트할 때 호출하는 메서드

 

 componentWillUnmount: 컴포넌트가 웹 브라우저상에서 사라지기 전에 호출하는 메서드입니다.

 

 

7. 마운트: DOM이 생성되고 웹 브라우저상에 나타나는 것을 마운트(mount)라고 한다.

 

8.

1)componentWillMount: 렌더링 되기전에

2)componentDidMount: 렌더링이 된 다음

3)componentWillReceiveProps: 새로운 props를 받았을때

4)shouldComponentUpdate :컴포넌트가 업데이트를 해야할지 말아야할지

=> 컴포넌트가 리렌더링을 해야할지 말아야할지를 결정하는 메서드. 

      이 메서드에서는 true, false 값을 반환해야하며, true를 반환하면 다음 라이프사이클 메서드를 실행하고, false를 반환하면 작업을

      중지한다.

5)componentWillUpdate: 컴포넌트 업데이트 되기전에

6)componentDidUpdate: 컴포넌트가 업데이트 작업이 끝난 후 호출하는 메서드.

7)componentWillUnmount: 컴포넌트가 웹 브라우저상에서 사라지기 전에 호출하는 메서드.

 

9. render() 함수

 

이 메서드는 컴포넌트 모양새를 정의한다. 그렇기에 컴포넌트에서 가장 중요한 메서드라고 할 수 있다.

라이프사이클 메서드 중 유일한 필수 메서드이기도 하다.

이 메서드 안에서 this.props, this.state에 접근할 수 있으며 리액트 요소를 반환한다.

(여기서 요소는 div 같은 태그가 될 수 도 있고, 따로 선언한 컴포넌트가 될 수도 있다.)

아무것도 보여주고 싶지 않다면 null 값이나 false 값을 반환하자. 

이 메서드 안에서는 이벤트 설정이 아닌 곳에서 setState를 사용하면 안되며, 브라우저의 DOM에 접근해서도 안된다.

DOM 정보를 가져오거나 state에 변화를 줄 때는 componentDidMount에서 처리해야 한다.

 

10. componentDidMount: 컴포넌트가 웹 브라우저상에 나타난 후 호출하는 메서드이다.

 

11. 컴포넌트는 네가지 경우에 업데이트를 진행한다.

- props가 바뀔 때

: 부모 컴포넌트에서 넘겨주는 props가 바뀔 때. 컴포넌트에 전달하는 Props의 값이 바뀌면 컴포넌트 렌더링이 이루어진다.

- state가 바뀔때

: 자신이 들고 있는 state가 setState를 통해 업데이트 될 때.

- 부모 컴포넌트가 리렌더링될 때

: 자신에게 할당된 props가 바뀌지 않아도, 자신이 들고 있는 state가 바뀌지 않아도, 부모 컴포넌트가 리렌더링 되면 자식 컴포넌트 또한      리렌더링 된다. 

- this.forceUpdate로 강제로 렌더링을 트리거할 때

 

12. componetDidUpdate: 컴포넌트 업데이트 작업이 끝난 후 호출하는 메서드이다.

 

13. 언마운트: 마운트의 반대과정이다. 즉, 컴포넌트를 DOM에서 제거하는 것을 언마운트(unmount)라고 한다.

 

14. componentWillUnmount: 컴포넌트가 웹 브라우저상에서 사라지기 전에 호출하는 메서드이다.

 

'📖 리액트 > 리액트를 다루는 기술' 카테고리의 다른 글

9강 컴포넌트 스타일링  (0) 2022.01.27
8장 Hooks  (2) 2022.01.26
6강 컴포넌트 반복  (0) 2022.01.24
4장 이벤트 헨들링  (0) 2022.01.21
3장 컴포넌트  (0) 2022.01.19