++ React를 더 잘 이해하기 위한 정리노트 시리즈
이전 포스팅에서 얘기한 리액트의 큰 특징 중 하나가 컴포넌트 기반이다.
컴포넌트는 레고 블럭 같다는 비유를 했는데 이를 바탕으로 두 가지 장점을 살펴보자!
컴포넌트는 재사용이 가능하다.
UI의 일부분을 구성하는 독립적인 컴포넌트를 만들어 이 블럭들을 조립해 하나의 완성품을 만들 수 있다.
하나의 컴포넌트를 잘 정의만 해두면 언제든지, 어디든지 필요한 곳에 사용할 수 있다.
컴포넌트는 HTML, CSS, JS를 한눈에 볼 수 있다. 특정 기능의 로직과 UI를 함께 정의해 독립적으로 컴포넌트를 개발할 수 있다. 이러한 편리함은 복잡한 인터페이스의 구조와 진행을 쪼개어 단순화한다.
그리고 변경사항이 생기면 해당 컴포넌트만 찾아 바꾸면 되기 때문에 오류가 생길 위험도 낮아진다.
예제를 보기 앞서 컴포넌트를 만들때 몇가지 규칙이 있다.
변경 전
function App() {
return (
<div>
<header>
<img src="src/assets/react-core-concepts.png" alt="Stylized atom" />
<h1>React Essentials</h1>
<p>
Fundamental React concepts you will need for almost any app you are going
to build!
</p>
</header>
<main>
<h2>Time to get started!</h2>
</main>
</div>
);
}
export default App;
변경 후
function Header() {
return (
<header>
<img src="src/assets/react-core-concepts.png" alt="Stylized atom" />
<h1>React Essentials</h1>
<p>
Fundamental React concepts you will need for almost any app you are going
to build!
</p>
</header>
);
}
function App() {
return (
<div>
<Header />
<main>
<h2>Time to get started!</h2>
</main>
</div>
);
}
export default App;
예제 코드를 보면 Header 컴포넌트를 정의하고 App 컴포넌트 안에 사용했다.
앞서 컴포넌트는 렌더링할 수 있는 컨텐츠를 반환해야한다고 했는데 왜 그럴까?
<Header /> 라고 사용한 것을 보면 일반적인 HTML 태그처럼 사용한 것을 볼 수 있다.
즉, 브라우저는 HTML 요소들을 렌더링할 수 있는데 그렇다고 JSX 파일인 리액트 컴포넌트를 브라우저에서 직접 렌더링할 수 없다.
개발 서버가 실행될 때, 이 JSX파일을 빌드 프로세스가 이해하고 이를 브라우저가 알아볼 수 있도록 HTML파일로 바꿔준다.