virtual DOM, props, state
리엑트는 가상돔이라는 개념을 가지고 있음.
가상돔은, 브라우저가 랜더링하기 위해 생성하는 DOM을 매번 전부다 새로 생성하는게 아니라,
매번 DOM의 사본을 가상돔이라는 이름으로 생성해서, 기존 DOM과의 차이점만 비교해서 랜더링 함.
이로써 랜더링 해야하는 DOM의 범위를 제한해서 브라우저 랜더링 속도를 향상시킴.
state는 이런 DOM을 업데이트 할때, 재랜더링의 기준이 되는 데이터임.
가상dom은 state의 메모리변화값을 감지하여, 변화유무를 판단함.
이 과정의 특성상, 메모리 값이 변하지 않고 데이터가 변하는 경우
데이터 변화를 시스템이 감지할 수가 없어 여러 문제가 발생.
따라서 리엑트에서 배열, 객체등의 자료를 다룰때 불변성을 유지하는것이 매우 중요함.
리엑트는 컴포넌트 단위로 랜더링을 하는 경우가 많은데, 이를 위해 컴포넌트를 잘게 쪼개서 꼭 필요한 상황에서 필요한 부분만 랜더링이 되도록 구조를 만든다. 하지만 파일을 쪼개는 경우 데이터를 전달해줘야 하는 경우가 생기는데, 이때 props를 이용해서 데이터를 전달해준다.
하지만 자식에게만 단방향으로 데이터가 전달되며, 한단계만 전달이 가능하기 때문에, 프로젝트 규모가 커지면 관리가 어려워짐(props drilling). 이 문제를 해결하기 위해 contextAPI, redux, recoil, jotai등 여러 전역상태관리 라이브러리가 있음.
이번주는 리엑트를 시작하는 한주였고, 기초의 중요성을 깨달았고, 꾸준하게 공부에 임해야겠다는 생각을 다시금 깨달은 한주였다.