

목 차
1. 리액트를 사용하는 이유
2. React의 원리.
2-1. React UI 업데이트 과정.
3. React의 특징.
3-1. Data Flow(단방향 데이터 바인딩)
3-2. Component 기반 구조
3-3. Virtual DOM
3-4. Props와 State
3-5. JSX
3-6. 다른 라이브러리들과의 높은 호환성.
4. React의 장단점.

React란, 사용자가 인터페이스를 구축하기 위한 선언적이고 효율적이며 유연한 JS 라이브러리.
주로 웹 애플리케이션의 인터렉티브한 사용자 인터페이스를 구축하는 데 사용됩니다.
고성능 렌더링:
- 리액트는 Virtual DOM을 사용하여 DOM 조작을 최적화하여 빠른 렌더링을 제공합니다.
재사용 가능한 컴포넌트:
- 리액트는 Component 기반 구조를 통해 코드의 재사용성을 높이고, 유지보수를 쉽게 합니다.
큰 커뮤니티:
- 리액트는 활발한 커뮤니티와 다양한 라이브러리 및 도구를 제공하여 개발 효율성을 높입니다.
유연성:
- 리액트는 다양한 플랫폼과 기술과 쉽게 통합될 수 있습니다.
.
Airbnb:
Walmart:
.
React는 개발자들이 복잡한 UI를 쉽게 관리할 수 있도록 해줍니다.

'React'는 "컴포넌트의 상태값이 변경되거나 부모가 재렌더링"되면, 'UI를 자동 업데이트' 해줍니다.
즉!
이 때, '가상 DOM(Virtual DOM)'을 통해 변경된 부분의 UI만 효율적으로 업데이트 해줍니다.
React의 UI 업데이트는 'Trigger, Render, Commit' 의 3가지 요소로 이루어지고,
'렌더 단계' 및 '커밋 단계'로 나뉘어집니다.
Trigger:
Render:
Commit:
: 렌더링 할 때마다 매번 새로운 가상 DOM 생성.
: 이전 가상 DOM과 비교해 바뀐 부분을 탐색하고, 실제 DOM에 반영할 부분을 결정.
렌더링 트리거:
Virtual DOM 생성 :
변경 사항 계산 :

: 렌더 단계를 거쳐 바꾸기로 결정된 부분만 실제 DOM에 반영
: 브라우저는 변경된 실제 DOM을 화면에 뿌림.
DOM 업데이트:
DOM 조작 :
라이프사이클 메서드 실행:

예측 가능성:
성능 최적화:


React는 "단방향 데이터 바인딩"을 사용하여 데이터가 부모에서 자식으로만 흐르도록 합니다.


React는 'Component'를 기본 단위로 사용하여 UI를 구성합니다.
이는 코드의 재사용성과 유지보수 용이성을 높여줍니다.
"Component"란 독립적인 단위의 소프트웨어 모듈을 말합니다.
☆ 코드를 반복해 입력할 필요 없이, Component만 import하여 사용하면 된다는 간편함이 있으며, 어플리케이션이 복잡해지더라도 코드의 유지보수, 관리가 용이해집니다.


"DOM"은 html, xml, css 등을 '트리 구조'로 인식하고, 데이터를 객체로 간주하면서 관리합니다.
React는이 'Virtual DOM'을 사용하여
실제 DOM에 대한 조작 및 접근을 최소화하고 렌더링 성능을 향상시킵니다.


: 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는데 사용.
: 컴포넌트 내부에서 동적으로 변하는 데이터를 관리하는 데 사용됩니다.
State란 '컴포넌트 내부'에서 선언하며, 내부에서 값을 변경할 수 있습니다.
'State'는 동적인 데이터를 다룰 때 사용하며, 사용자와 상호작용을 통해 데이터를 동적으로 변경할 때 사용합니다.
이는 '클래스형 컴포넌트'에서만 사용 가능하고, 각각의 State는 독립적입니다.

: JSX는 HTML과 JS 코드를 결합한 문법으로, 리엑트 컴포넌트를 쉽게 작성할 수 있게 합니다.
'JSX'는 리엑트에서 사용하는 독특한 문법입니다.
JS와 HTML을 동시에 사용하며, HTML에 JS 변수들을 바로 사용할 수 있는 일종의 템플릿 언어입니다.
const App = () => {
const hello = 'Hello world!';
return <div>{hello}</div>;
}


고성능 렌더링: Virtual DOM을 통해 빠른 렌더링을 제공합니다.
재사용 가능한 컴포넌트: 코드의 재사용성을 높입니다.
큰 커뮤니티: 다양한 리소스와 도구를 제공합니다.
유연성: 다양한 플랫폼과 기술과 쉽게 통합됩니다.
학습 곡선: JSX와 리액트의 고급 개념이 처음에는 어려울 수 있습니다.
문서화의 부족: 빠른 개발 속도 때문에 문서화가 부족할 수 있습니다.
UI 라이브러리만 제공: 전체 애플리케이션을 구축하기 위해서는 추가적인 라이브러리가 필요합니다.