- 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
- React는 데이터가 변경됨에 따라 적절한 컴포넌트만
효율적으로 갱신하고 렌더링함
- 캡슐화된 컴포넌트
- 컴포넌트 로직은 JavaScript로 작성됨
- 다양한 형식의 데이터를 앱 안에서 손쉽게 전달 가능
- DOM과는 별개로 상태 관리 가능
- JavaScript를 확장한 문법
- JavaScript 코드 안에서 UI 관련 작업을 할 때 시각적 도움
- 컴파일이 끝나면, JSX 표현식이 정규 JavaScript 함수를 호출하고
JavaScript 객체로 인식됨- 어트리뷰트에 따옴표를 이용해 문자열 리터럴 정의 가능
- 중괄호를 사용하여 어트리뷰트에 JavaScript 표현식 삽입 가능
- 태그가 비어있다면 /> 를 이용해 바로 닫아야 함
- 자식 포함 가능
- 주입 공격 방지
- 엘리먼트는 React 앱의 가장 작은 단위
- React 엘리먼트는 일반 객체이며 쉽게 생성 가능
- React DOM은 React 엘리먼트와 일치하도록 DOM을 업데이트
<div id="root"></div>
루트(root) DOM 노드
React 엘리먼트를 루트 DOM 노드에 렌더링하려면
ReactDOM.render()로 전달하면 됨
const element = <h1>Hello, world</h1>;
ReactDOM.render(element, document.getElementById('root'));
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(element, document.getElementById('root'));
}
setInterval(tick, 1000);
setInterval() 콜백을 이용해 초마다 ReactDOM.render() 호출
React DOM은 해당 엘리먼트와 그 자식 엘리먼트를 이전의 엘리먼트와 비교하고
DOM을 원하는 상태로 만드는데 필요한 경우에만 DOM을 업데이트