리액트 컴포넌트에는 생명 주기가 있다. 이것을 라이프 사이클(Life cycle)이라고 표현한다. 라이프 사이클은 컴포넌트가 실행되거나, 업데이트 또는 제거될 때 특정한 이벤트들을 호출하는 것이다.
이러한 리액트의 라이프 사이클은 클래스 컴포넌트에서만 사용할 수 있으며, 함수 컴포넌트에서 사용하고 싶을 경우에는 리액트 훅인 useEffect를 이용하여 사용할 할 수 있다.
컴포넌트 생성자 메서드로, 컴포넌트가 생성이 되면 제일 먼저 실행이 되는 메서드이다. state와 props를 접근하여 값을 할당할 수 있다.
getDerivedStateFromProps는 props로 받아온 것을 state에 설정하고 싶을 때 사용되며, 최초 마운트될 때와 갱실될 때, 모두에서 render 메서드를 호출하기 직전에 호출된다. 특정 객체를 반환하게 되면 해당 객체의 값이 state로 갱신이 되며, null을 반환하게 되면 아무 것도 갱신하지 않을 수 있다.
render()은 컴포넌트를 렌더링 해주는 메서드이다. 클래스 컴포넌트에서 반드시 구현되어야 하는 유일한 메서드이다.
컴포넌트가 마운트, 첫번째 렌더링이 된 직후 호출되는 메서드이다. 이 시점에는 화면이 구현이 되어있는 상태이다. componentDidMount에서는 DOM에 접근하여 사용을 할 수가 있다. 그래서 여기에서는 주로 AJAX 요청을 하거나, DOM에 속성을 읽거나 변경을 하는 작업을 한다. (setTimeout, setIneterval 등)
getDerivedStateFromProps는 값이 갱신되어 업데이트 시에도 render 전에 메서드가 실행된다.
shouldComponentUpdate()는 컴포넌트를 다시 리렌더링 할지 말지를 결정하는 메서드이다. props 또는 state가 새로운 값으로 갱신되어서 렌더링이 발생하기 직전에 호출된다. 기본값은 true이며, return false를 하면 render을 취소할 수 있다. 주로 성능 최적화를 위해 사용된다.
렌더링을 한다.
getSnapshotBeforeUpdate()는 가장 마지막으로 렌더링된 결과가 DOM 등에 반영되기 전에 호출된다. 이 메서드를 사용하면 DOM 상태가 변경이 되기 전의 값을 반환하여 componentDidUpdate에서 인자로 받아 사용이 가능하다.
componentDidUpdate는 갱신이 일어난 직후에 호출된다. 이 메서드는 최초 렌더링에서는 호출되지 않는다.
컴포넌트가 사라지기 직전에 호출을 하고, 주로 여기서는 DOM에 등록했던 이벤트들을 제거해주는 용도로 사용된다.
[state, setState] 순으로 반환해서 사용한다.componentDidMount와 componentDidUpdate, componentWillUnmount가 합쳐진 것을 의미한다. .current 프로퍼티로 전달된 인자로 초기화된 변경 가능한 ref 객체를 반환한다. 반환된 객체는 컴포넌트의 전 생명주기를 통해 유지된다.웹 브라우저에서 자바스크립트로 HTML 파일을 렌더링하는 방식을 의미한다.
서버에서 request에 맞는 HTML을 response로 보내주는 방식을 의미한다.
만들어진 HTML 파일을 서버에 배포하고, 서버에 request가 들어오면 만들어놓은 HTML 파일을 response로 보내주는 방식을 의미한다.