React의 각 컴포넌트는 생성(Mount)
/ 갱신(Update)
/ 제거(Unmount)
의 생명 주기를 가진다.
React에서는 각 생명 주기에 따른 메서드를 가지고 있으며, 상황에 따라 일치하는 메서드가 호출된다.
메서드 | 설명 |
---|---|
constructor() | 컴포넌트가 가장 처음 만들어질 때 호출됨 |
getDerivedStateFromProps(nextProps, prevState) | 부모 컴포넌트로부터 props를 전달 받은 뒤, 해당 props 자식 컴포넌트에 할당할 때 호출됨 |
render() | 컴포넌트를 브라우저에 렌더링할 준비가 됐을 때 호출됨 |
componentDidMount() | 브라우저에 컴포넌트가 렌더링 된 후에 호출됨 |
메서드 | 설명 |
---|---|
getDerivedStateFromProps(nextProps, prevState) | 부모 컴포넌트로부터 props를 전달 받은 뒤, 해당 props 자식 컴포넌트에 할당할 때 호출됨 |
shouldComponentUpdate() | 컴포넌트를 브라우저에 렌더링 하기 전에 호출됨 컴포넌트가 리렌더링을 해야하는지 여부를 판단함 |
render() | 리렌더링한 컴포넌트를 브라우저에 렌더링할 준비가 됐을 때 호출됨 |
getSnapshotBeforeUpdate() | 리렌더링한 컴포넌트를 브라우저에 렌더링한 직후에 호출됨 컴포넌트의 리렌더링 이전 상태를 저장할지 여부를 판단함 |
componentDidUpdate() | 브라우저에 리렌더링한 컴포넌트가 렌더링 된 후에 호출됨 |
메서드 | 설명 |
---|---|
componentWillUnmount() | 컴포넌트를 DOM에서 제거하기 직전에 호출됨 |
클래스형 컴포넌트에서 각 단계별로 설정해야 했던 부분들이,
함수형에서는 함수 내부에서 자동으로 처리하는 것으로 변화했다.
클래스형 컴포넌트 | 함수형 컴포넌트 |
---|---|
전반적인 mount 과정 | 함수 자체에서 실행 |
mount의 렌더링 | return() |
getDerivedStateFromProps(nextProps, prevState), shouldComponentUpdate() 등의 전반적인 update 과정 | useState() |
componentDidMount(), componentDidUpdate(), componentWillUnmount() | useEffect() |
getSnapshotBeforeUpdate() | useMemo() useCallback() |