React를 배우다 보면 가장 먼저 접하게 되는 것이 JSX(JavaScript XML)입니다. JSX는 JavaScript 파일 안에서 HTML처럼 보이는 코드를 작성할 수 있게 해주는 문법으로, React 컴포넌트를 보다 직관적으로 작성할 수 있도록 도와줍니다. 오늘은 JSX의 개념과 사용 방법, 장점 그리고 주의사항에 대해서 알아보도록 하겠습니다.
1. JSX란?
JSX는 JavaScript와 HTML을 결합한 문법으로, React 컴포넌트에서 UI를 정의할 때 주로 사용됩니다.
JSX는 브라우저가 직접 실행할 수 없으므로 Babel과 같은 트랜스파일러를 통해 JavaScript로 변환됩니다.
변환된 코드는 React.createElement를 호출하는 형태로 컴파일됩니다.
# JSX 예시 코드
const element = <h1>Hello, JSX!</h1>;
# 변환된 코드
const element = React.createElement('h1', null, 'Hello', JSX!');
2. JSX의 특징
1) HTML과 유사한 문법
- JSX는 HTML을 작성하는 것처럼 직관적인 문법을 제공합니다.
function App() {
return (
<div>
<h1>Hello, JSX!</h1>
<p>React란 무엇일까요?</p>
</div>
);
}
2) JavaScript 표현식 사용
- 중괄호 {}를 사용하면 JavaScript 표현식을 삽입할 수 있습니다.
function Greeting({ name }) {
return <h1>Hello, {name}!</h1>;
}
3) 조건부 렌더링
특정 조건에 따라 화면에 표시할 내용을 변경할 수 있습니다. JavaScript의 삼항 연산자를 사용하여 조건부로 UI를 출력할 수 있습니다.
function Status({ isLoggedIn }) {
return (
<div>
{isLoggedIn ? <p>Welcome back!</p> : <p>Please log in.</p>}
</div>
);
}
3. JSX의 장점
- 가독성 증가: HTML과 유사한 문법으로 코드를 쉽게 이해할 수 있습니다.
- React와의 최적화된 통합: React의 UI 렌더링과 JavaScript의 동적 기능을 자연스럽게 결합합니다.
- 디버깅 편리성: 명확한 구조와 오류 메시지를 제공해 디버깅이 수월합니다.
4. JSX 사용 시 주의 사항
1) 단일 루트 엘리먼트 필요
JSX 코드는 반드시 하나의 루트 엘리먼트를 반환해야 합니다.
* 루트 엘리먼트 : JSX에서 하나의 컴포넌트를 반환할 때 모든 내용을 감싸는 최상위 요소를 말합니다.
// 올바른 코드
return (
<div>
<h1>Title</h1>
<p>Content</p>
</div>
);
// 잘못된 코드
return (
<h1>Title</h1>
<p>Content</p>
);
2) React 속성 사용
HTML 속성 대신 React에서 제공하는 속성을 사용해야 합니다.
ex) class > className
for > htmlFor
return <label htmlFor="name">Name:</label>;
5. 실습
배열 데이터를 JSX로 출력해 보겠습니다.
function App() {
const items = ["Apple", "Banana", "Cherry"];
return (
<div>
<h1>Fruits List</h1>
<ul>
{items.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
</div>
);
}
# 결과
Fruits List
- Apple
- Banana
- Cherry
'REACT' 카테고리의 다른 글
[React] Hook : useState와 useEffect (0) | 2024.12.24 |
---|---|
[React] State and Lifecycle : 리액트 컴포넌트의 관리 (2) | 2024.12.03 |
[React] Components 와 Props (1) | 2024.11.26 |
[React] element란? (0) | 2024.11.25 |
React 개발 환경 구축하기 (1) | 2024.11.23 |