그러다 보니까 각각의 컴포넌트에는 lifecycle 즉, 컴포넌트의 수명 주기가 존재.
👉 컴포넌트의 수명은 보통 페이지에서 렌더링되기 전인 준비과정에서 시작
하여 페이지에서 사라질 때 끝남
.
라이프사이클은 크게 3가지 유형으로 나눌 수 있음.
- 생성될 때 (mount)
- 업데이트 할 때 (update)
- 제거할 때 (unmount)
📌업데이트는 아래의 상황에서 발생
1. props가 바뀔 때
2. state가 바뀔 때
3. 부모 컴포넌트가 리렌더링 될 때
4. this.forceUpdate로 강제로 렌더링을 트리거 할 때
컴포넌트를 만들 때
처음으로 실행되는데, 이 메서드에서는 초기 state
를 정할 수 있음.props
로 받아온 것을 state
에 넣어주고 싶을 때 사용렌더링
할 때 필요한 메서드로, 유일한 필수 메서드이기도 하다.ex)
render () { // 클래스형
return <div>컴포넌트</div>;
}
return <div>컴포넌트</div>; // 함수형
첫번째 렌더링이 마치고 나면 호출되는
메서드여기선 보통 DOM을 사용해야 하는 외부 라이브러리 연동을 하거나,
해당 컴포넌트에서 필요로 하는 데이터를 요청하기 위해 axios, fetch 등을 통하여
ajax 요청을 하거나, DOM의 속성을 읽거나 직접 변경하는 작업을 진행함.
[]
)을 비우면 이 메서드와 똑같은 기능 구현 가능마운트 될 때
뿐만 아니라, 컴포넌트의 props나 state가 바뀌었을 때
도 호출 ! ❓React.memo란 ?
- 컴포넌트의 props 가 바뀌지 않았다면, 리렌더링을 방지하여 컴포넌트의 리렌더링 성능 최적화를
해줄 수 있는 함수
-이 함수를 사용한다면, 컴포넌트에서 리렌더링이 필요한 상황에서만 리렌더링을 하도록 설정 가능.
+ 렌더링 최적화 하지 않을 컴포넌트에 React.memo 를 사용하는것은,
불필요한 props 비교만 하는 것이기 때문에 실제로 렌더링을 방지할수있는 상황이 있는 경우에만 사용
브라우저에 실제로 반영되기 직전
에 호출됨.컴포넌트에 변화가 일어나기 직전의 DOM 상태
를 가져와서 특정 값을 반환하면 그 다음 발생하게 되는 componentDidUpdate 함수에서 받아와서 사용할 수 있음. 리렌더링이 마친 후, 화면에 우리가 원하는 변화가 모두 반영되고 난 뒤
호출됨.컴포넌트가 화면에서 사라지기 직전
에 호출됨.❓clearTimeout은 언제 사용될까 ?
- setTimeout 사용 후 종료하고 싶은 시점에 사용.
- 재귀로 setTimeout을 사용해서 무한반복시켰을 때, 원하는 시점에 clearTimeout()으로
재귀를 종료시킬 수 있음.
State and Lifecycle
LifeCycle Method
React.memo를 사용한 컴포넌트 리렌더링 방지