React의 렌더링은 컴포넌트가 props와 state를 통해 UI를 어떻게 구성할지 컴포넌트에게 요청하는 작업이다. 그래서 크게 트리거, 렌더링 단계, 커밋 단계, 브라우저 페인팅 순으로 렌더링이 이루어진다.
렌더링 프로세스가 시작되는 단계이다. 리액트에서 트리거는 크게 두 가지 상황에서 발생한다.
useState, useReducer 등의 상태() 변경.props의 변경.Context 값의 변화.이 단계는 리액트가 "어떤 부분을 변경해야 하는지" 계산하는 과정이다. 브라우저의 화면(UI)에는 아직 아무런 변화가 나타나지 않는 순수 계산 단계이다.
Virtual DOM(가상 DOM)을 생성한다.Virtual DOM 트리와 새로 생성된 Virtual DOM 트리의 속성이나 요소의 변경 사항을 식별하여 비교한다.렌더링 단계에서 계산된 변경 사항을 실제 브라우저 DOM에 반영하는 단계이다.
appendChild(), removeChild(), setAttribute() 등의 브라우저 API를 사용하여 최소한의 변경 사항만 실제 DOM에 주입한다.리액트의 커밋 단계가 완료되면, 브라우저 엔진이 변경된 DOM을 바탕으로 화면을 다시 그린다. 이 과정은 리액트의 통제 밖이며 브라우저의 렌더링 엔진(Reflow & Repaint)에 의해 수행된다.
