Facebook에서 개발한 JS 라이브러리.
웹 어플리케이션의 UI(User Interface)를 효율적으로 만들기 위해 사용됨.
React를 사용하면 웹 페이지의 복잡한 구조를 관리하기 쉽게 만들어 줌(모바일 앱 개발에도 사용:React Native)
HTML과 같은 구조를 JS 코드로 작성하게 하고,
화면을 업데이트하는 과정을 자동화해 주어 개발자의 생산성을 크게 향상시킬 수 있음.
컴포넌트 내부에서 관리되는 데이터로, UI의 동적 변화를 반영하는데 사용.
상태는 컴포넌트의 현재 상태를 나타내는 값이며,
상태가 변경되면 해당 컴포넌트와 그 자식 컴포넌트가 다시 렌더링 된다.
1) 컴포넌트 내부에서 관리
2) 변경 가능(mutable)
3) UI 업데이트
1) 직접 수정 불가
const [count, setCount ] = useState(0);
setCount(count + 1) ;
cf) count = count + 1 // React가 감지하지 못함
2) 비동기적으로 동작
setCount(count + 1); // 상태 업데이트 요청
console.log(count); // 아직 업데이트 되지 않은 이전 값 출력
컴포넌트란 화면의 한 부분을 담당하는 독립적인 코드 블록을 의미한다.
컴포넌트를 재사용 가능하도록 만들어 코드를 효율적이고 유지보수하기 쉽게 만들어준다.
App.js라는 최상위 컴포넌트 기반으로 만듦
DOM(Document Object Model) : 브라우저가 화면의 구조를 이해하는 방식 (문서의 구조화된 표현)
React는 Virtual DOM 이라는 경량화된 "가상"버전의 DOM을 사용한다.
React는 화면이 변경될 때 실제 DOM을 바로 업데이트하지 않고,
실제 DOM을 복사해둔 가벼운 가상 DOM에서 변경된 부분을 계산한 뒤
최소한의 변경만 실제 DOM에 적용한다
데이터가 부모에서 자식으로만 흐른다는 특징.
부모 컴포넌트는 props를 통해 데이터를 자식에게 전달하고,
자식 컴포넌트는 props를 받아서 UI를 생성하거나 처리
JS에서 HTML을 작성할 수 있는 특별한 문법.
React 컴포넌트를 만들 때, 화면에 보여질 구조를 JS 코드로 작성할 수 있음.
JS의 기능과 HTML 을 결함할 수 있어 더 직관적이고 생산적인 코드 작성이 가능
함수형 컴포넌트에서 상태와 생명주기 기능을 사용할 수 있도록 만든 API.
(클래스형 컴포넌트, 함수형 컴포넌트 2가지 존재)
이전에는 클래스형 컴포넌트에서만 상태와 생명주기를 사용할 수 있었지만,
Hooks 덕분에 함수형 컴포넌트에서도 이를 간편하게 사용할 수 있게 됨
ex) useState, useEffect, useContext ...
하나의 HTML 페이지로 동작하는 웹 애플리케이션