리액트 애플리케이션 트리 안에 있는 모든 컴포넌트들이 현재 자신들이 가지고 있는 props와 state의 값을 기반으로 어떻게 UI를 구성하고 이를 바탕으로 어떤 DOM 결과를 브라우저에 제공할 것인지 계산하는 일련의 과정을 의미함
👀 컴포넌트가 props와 state와 같은 상태값을 가지고 있지 않다면, 해당 컴포넌트가 반환하는 JSX 값에 기반해 렌더링이 일어나게 됨
렌더링 프로세스가 시작되면 리액트는 컴포넌트의 루트에서부터 차근차근 아래쪽으로 내려가면서 업데이트가 필요하다고 지정돼 있는 모든 컴포넌트를 찾음
클래스형 컴포넌트의 경우 클래스 내부의 render() 함수 실행 함수형 컴포넌트의 경우 FunctionComponent() 그 자체를 호출한 뒤에 그 결과물을 저장함
렌더링 결과물은 JSX 문법으로 구성돼 있고, 이것이 자바스크립트로 컴파일되면서 React.createElement()를 호출하는 구문으로 변환됨
createElement는 브라우저의 UI 구조를 설명할 수 있는 일반적인 자바스크립트 객체를 반환함
렌더링 결과물 예시
{type: TestComponent, props: {a: 35, b: "yceffort", children: "안녕하세요"}}
재조정 과정: 각 컴포넌트의 렌더링 결과물을 수집 -> 가상 DOM과 비교해 실제 DOM에 반영하기 위한 모든 변경 사항을 차례차례 수집함
재조정 과정이 모두 끝나면 모든 변경 사항을 하나의 동기 시퀀스로 DOM에 적용해 변경된 결과물이 보이게 됨