렌더링
: 함수가 호출되어 가상돔에 반환되는 것을 의미함
함수(컴포넌트)가 호출되면 VirtualDOM(객체)이 반환되고 그것이 VirtualDOM과 RealDOM의 변경된 부분을 확인해서 RealDOM(DOM)에 반영이 되는 그런 과정을 거치게 된다.
Render: 함수가 호출되어 VirtualDOM에 반환이 되는 것을 의미함
함수(컴포넌트)를 만드는 것에 집중하면 된다.
가상돔을 만드는 것 그리고 RealDOM에 반영되는 과정은 React가 해준다.
간혹, 직접 DOM에 접근하기 위해서는
ref
를 사용하면된다.
렌더링이 되기 전까지 어떤 구성으로 되어 있는지 모른다.
렌더링이 되고 난후에 가상돔(VirtualDOM)이 생성되는데 이 가상돔은 객체이다.
이 가상돔이 변경된 사항을 DOM에 반영한 것이 Commit과정이다.
COMMIT이 이뤄지면 실제 화면으로 반영된다.
리액트는 각 컴포넌트마다 Fibernode(상태 저장 공간)를 만든다.
Fibernode
: 트리구조에서 개별적인 노드(React component)를 나타낸다. 렌더링 작업을 관리하고 최적화하기 위한 내부적인 데이터 구조이다.
[사용방법]
구현할 함수 컴포넌트에 React.memo를 씌워주면 된다.
Profile함수를 호출할때마다
who
라는 함수, handleClick 함수가 새로 만들어지기 때문에 참조하는 값이 다르다고 보고 리렌더링이 일어나는 것이다.
useCallback, useMemo를 사용하면 Fiber Node
에 저장해서 비교하기 때문에 React에서는 동일한 값을 가져왔기 때문에 동일하다고 인지한다.