컴포넌트는 UI를 구성하는 독립적이고 재사용 가능한 작은 단위를 의미한다.
리액트는 컴포넌트를 조합해 하나의 애플리케이션을 완성한다.

위 그림처럼 웹페이지를 기능 단위로 나누는 과정을 추상화라고 한다.
추상화는 복잡한 구조를 단순하게 표현함으로써 전체 시스템을 명확하게 이해하고 관리하게 도움을 준다.
추상화 하여 기능별로 나누어 각각의 컴포넌트로 구현한 후 App컴포넌트에 모두 조합하는 식이다.
// 각각의 컴포넌트 구현 후
function App() {
return (
<div>
<Header />
<Aside />
<Article />
<Footer />
</div>
)
}
클래스 컴포넌트와 함수형 컴포넌트가 있는데
2025년 대부분은 함수형 컴포넌트만 사용하므로 클래스 컴포넌트는 다루지 않겠다.
함수형 컴포넌트는 함수를 이용해 컴포넌트를 작성하는 방식으로 함수 그 자체라고 이해해야 한다.
컴포넌트의 이름은 파스칼 케이스로 작성해야한다.
function mycomponent() {} // X
function MyComponent() {} // O
기본 구조는 function 키워드로 함수를 선언하고 (선언문 방식),
return문 안에는 JSX를 사용하여 화면에 표시될 UI 구조를 정의한다.
export default 키워드를 사용하면 이 컴포넌트를 다른 파일에서 쉽게 불러와 사용할 수 있다.
function App() {
return (
<>
<h1>빈 <>처럼 보이는 Fragment 는</h1>
<p>여러 태그를 하나로 감싸주는 용도</p>
</>
);
}
export default App;

컴포넌트가 어디에서 렌더링 되는지에 따라 컴포넌트 트리에서의 위치가 결정된다.
즉, 컴포넌트 간 포함관계에 따라 트리가 구성되며 이 구조가 동작 방식이나 데이터 흐름에 중요한 영향을 준다.
이벤트 속성 - 리액트 공식문서
리액트 프론트엔드 개발 입문 / 저자 김기수
컴포넌트와 props 객체 - React Props
컴포넌트와 이벤트 - React Event
컴포넌트의 상태 - React Hook - useState, useEffect, useRef