OI7MI
[React] JSX : JavaScript XML 본문
JSX란?
JSX는 JavaScript를 확장한 문법이다.
React에서 UI를 표현하기 위해 사용되며, 문법이 HTML과 매우 비슷해서 가독성이 좋고 작성이 편리하다.
JSX를 사용하는 이유
React에서는 UI를 React Element 객체로 표현한다.
이 React Element는 아래처럼 React.createElement로도 만들 수 있다.
기존 방식 (createElement)
const title = React.createElement(
"h3",
{
className:'title',
onMouseEnter:()=>console.log("title"),
},
"hello",
);
이 방식은 JavaScript만으로 작성할 수 있지만
구조가 복잡해지고 가독성이 떨어진다.
JSX 방식
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
const title = (
<h3 className="title"
onMouseEnter={()=> console.log("title")}
>
hello
</h3>
);
</script>
JSX는 HTML과 유사한 문법을 사용하기 때문에
UI 구조를 직관적으로 이해할 수 있다.
JSX의 정체
JSX는 새로운 문법처럼 보이지만,
실제로는 React.createElement를 더 쉽게 작성하기 위한 문법 설탕(syntax sugar) 이다.
아래 두 코드는 완전히 동일한 의미를 가진다.
// jsx
<h3 className="title">hello</h3>
// js
React.createElement("h3", { className: "title" }, "hello");
Babel이 필요한 이유
브라우저는 JSX 문법을 이해하지 못한다.
따라서 JSX 코드를 브라우저가 이해할 수 있는 JavaScript 코드로 변환하는 과정이 필요하다.
이 역할을 하는 도구가 Babel이다.
Babel의 역할
- JSX → React.createElement 형태의 JavaScript 코드로 변환
- 최신 JavaScript 문법을 구형 브라우저에서도 동작하도록 변환
즉, Babel은 JSX로 작성된 코드를 브라우저가 이해할 수 있는 JavaScript로 변환한다.
Babel
Current Sponsors We're a small group of volunteers that spend their free time maintaining this project, funded by the community. If Babel has benefited you in your work, becoming a contributor or sponsoring might just be a great way to give back!
babeljs.io

'프론트엔드 > React' 카테고리의 다른 글
| [React] useState 상태 업데이트와 배열에서 특정 항목 삭제하기 (0) | 2026.01.09 |
|---|---|
| [React] useEffect() 와 Cleanup 함수 (0) | 2026.01.07 |
| [React] CSS Module 사용 이유와 사용 방법 (1) | 2026.01.06 |
| [React] useState로 input의 disabled 속성 제어하기 (0) | 2025.12.27 |
| [React] 컴포넌트의 상태 관리: state와 useState (0) | 2025.12.22 |