리액트는 javascrpt 오픈소스 라이브러리
컴포넌트 : 프로그래밍의 한 부분을 의미, 재사용이 가능한 최소 단위를 뜻함
컴포넌트로 사용하는 이유
1.현대의 웹은 크고 복잡하기 때문에 작게 분할해서(캡슐화) 해결하기 위해 필요
2.분업화 가능
범용성
선언형과 명령형 프로그래밍이 있음
function double (arr) {
return (arr.map(x => x * 2));
}
function double (arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
result.push(arr[i] * 2)
}
return (result);
}
기존 DOM의 문제를 탈피하기 위해 나온 대안
기존에 DOM에서는 요소를 하나 수정하고 함수를 만들고 실행하면 모든 요소들의 스타일을 계산했음, 이 과정에서 불필요한 연산이 매번 발생했기 떄문에, 이 과정을 줄이기 위해 나온 것이다.
DOM에 변화가 생기면, 렌더 트리를 재생성, 레이아웃을 만들고 페인팅을 하는 과정이 다시 반복
이 부분에서 Virtual DOM은 뷰에 변화가 있다면, 실제 DOM에 적용되기전에 가상의 DOM에 먼저 적용, 최종적인 결과를 실제 DOM에 전달
즉, 변화가 일어난 부분만 DOM트리에 적용