목차
반응형
Life Cycle
모든 리액트 컴포넌트에는 생명주기(Life Cycle)가 존재한다.
컴포넌트는 ‘생성(mounting) -> 업데이트(updating) -> 제거(unmounting)’ 의 생명주기를 갖는다.
생명주기에 맞게 어떤 작업을 처리해야 하는지에 따라 불필요한 업데이트를 방지할 수 있다.
리액트의 클래스형 컴포넌트는 라이프사이클을 활용하고, 함수형 컴포넌트는 Hook을 사용한다.
Lift Cycle(생명주기)
Mount(생성)
컴포넌트의 인스턴스가 생성되어, DOM에 삽입될 때 순서대로 호출된다.
- constructor() :
컴포넌트를 새로 만들 때마다 호출되는 클래스 생성자 메소드
this.props this.state 에 접근할 수 있으며 리액트 요소를 반환한다.
setState 를 사용할 수 없으며 DOM에 접근 해서는 안된다. - getDerivedStateFromProps() :
props 에 있는 값을 state 에 동기화 시킬 때 사용하는 메서드 - render() :
UI를 렌더링하는 메소드 - componentDidMount() :
컴포넌트가 웹 브라우저 상에 나타난 후 즉 첫 렌더링을 마친 후에 호출하는 메소드
라이브러리나 프레임워크의 함수를 호출 하거나 이벤트 등록, setTimeout, setInterval과 같은 비동기 작업 을 처리하면 되고, setState 호출도 이 메소드에서 호출하는 경우가 많다.
Update(업데이트)
props나 state가 변경되면 렌더가 진행되며 순서대로 호출된다.
- getDerivedStateFromProps() :
이 메서드는 마운트 과정에서 호출되며, 업데이트를 시작하기 전에도 호출된다.
props 의 변화에 따라 state 값에도 변화를 주고 싶은 경우에 사용한다. - shouldComponentUpdate() :
props 또는 state 를 변경했을 때, 리렌더링을 시작할지 여부를 지정하는 메소드
true 를 반환하면 다음 라이프사이클 메서드를 계속 실행하고, false 를 반환하면 작업을 중지한다. - render() :
컴포넌트를 리렌더링 한다. - getSnapshotBeforeUpdate() :
컴포넌트 변화를 DOM에 반영하기 바로 직전에 호출하는 메소드 - componentDidUpdate() :
컴포넌트 업데이트 작업이 끝난 후 호출하는 메서드.
Unmount(마운트 해제 / 제거)
컴포넌트를 DOM에서 제거하는 과정
- componentWillUnmount() :
컴포넌트를 DOM에서 제거할 때 실행한다.
이후에 컴포넌트는 다시 렌더링 되지 않으므로, 여기에서 setState를 호출하면 안된다.
render()함수 자동실행조건(리렌더링)
- New props 새로운 props 생성 시
- 부모 컴포넌트가 다시 렌더링 될 때
- setState() 함수가 실행되어 컴포넌트 내부의 state가 변경될 때
- 클래스 컴포넌트의 forceUpdate() 메소드가 호출되었을 때
반응형