React - LifeCycle 간단히 알아보기
chanto11
·2021. 3. 13. 19:29
크게 3가지 단계로는 Mount -> Update -> Unmount 로 나눠진다.
1. Mounting - 화면을 그린다.
constructor - React Component 를 생성한다.
: 지역 state를 초기화, 이벤트 처리 메서드 바인딩
※ this.state나 this.setState()를 사용해야하며, props를 복사하면 안됩니다.( super(props)--X )
(New) getDerivedStateFromProps - props 로 받아온 것을 state 에 넣어주고 싶을 때 사용.
render - 컴포넌트를 렌더링합니다. virtualDOM에 해당 컴포넌트를 생성.
※ 실제 DOM노트에 표시를 하는 메소드는 ReactDOM.render 메소드를 통해 표시하게 됩니다.
componentDidMount - render로 만들어진 virtualDOM을 실제 돔에 반영한 직후 호출. (= 렌더링 직후)
: 컴포넌트에 필요한 데이터를 가져오거나 DOM 속성을 읽거나 변경하는 작업을 진행
: hooks에서는 useEffect를 이용하여 componentDidMount의 역활을 수행.
useEffect(() => {
console.log("component did mount with useEffect!");
});
2. Updating - 화면을 변경한다.
getDerivedStateFromProps - props 로 받아온 것을 state 에 넣어주고 싶을 때 사용.
render - 컴포넌트를 렌더링합니다. virtualDOM에 해당 컴포넌트를 생성.
※ 실제 DOM노트에 표시를 하는 메소드는 ReactDOM.render 메소드를 통해 표시하게 됩니다.
shouldComponentUpdate - 컴포넌트를 리렌더링 할지 말지를 결정.
※ 리렌더링이 일어나도 실제 화면이 계속 새로 그려지는것이 아니고 virtualDOM과 비교해서 실제 바뀐게 있어야 실제 화면에 반영.
(New) getSnapshotBeforeUpdate - 변화가 일어나기(Update) 전에 호출.
※ DOM상태나 특정 값을 반환하면 componentDidUpdate에서 받아서 사용할 수 있습니다.
componentDidUpdate - 리렌더링이 마치고, 화면에 변화를 모두 반영한 뒤 호출. (= 리렌더링 직후)
: DOM 속성을 읽거나 변경하는 작업을 진행
: hooks에서는 useEffect를 이용하여 componentDidUpdate의 역활을 수행.
useEffect(() => {
console.log("component did mount with useEffect!");
},
//componentDidUpdate [state]값에 변화가 있으면 리렌더링
[state]
);
3. Unmount - 화면에서 지운다.
componentWillUnmount - 컴포넌트가 화면에서 사라지기 직전에 호출.
: 컴포넌트가 Unmount 되기 전에 사라지는 컴포넌트에 대한 정리 작업을 수행.
: hooks에서는 useEffect를 이용하여 componentWillUnmount의 역활을 수행.
useEffect(() => {
console.log("component did mount with useEffect!");
return( // componentWillUnmont
// 지워지기 전에 정리할 작업
)
}, []);
'React' 카테고리의 다른 글
[원티드] 프리온보딩 프론트엔드 챌린지 7월 - 사전과제 (0) | 2023.07.03 |
---|