JSX란?
React.createElement의 표현식이며 문자도 HTML도 아닌 JavaScript의 확장 문법이다.
JSX 문법으로 작성된 코드는 Babel이 순수한 JavaScript로 컴파일하여 사용한다.
=> Babel이란?
컴파일러로 언어 해석기, 특정 언어를 다른 프로그래밍 언어로 옮기는 프로그램이다.
html과 JavaScript 사이를 왔다갔다 할 수 있는 장점이 있다.
https://babeljs.io/ (JSX -> JavaScript)
CDN 추가
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel"></script>
JSX 쓰는 이유
- React.createElement vs JSX
- 가독성 완승
- babel과 같은 컴파일 과정에서 문법적 오류를 인지하기 쉬움
React.createElement와 JSX 비교
ReactDOM.render(
React.createElement(
"div",
null,
React.createElement(
"div",
null,
React.createElement("h1", null, "주제"),
React.createElement(
"ul",
null,
React.createElement("li", null, "React"),
React.createElement("li", null, "Vue")
)
)
),
document.querySelector("#root")
);
<script src="text/babel">
ReactDOM.render(
<div>
<div>
<h1>주제</h1>
<ul>
<li>React</li>
<li>Vue</li>
</ul>
</div>
</div>, document.querySelector("#root"));
</script>
JSX 문법
- 최상위 요소가 하나여야 한다.
- 최상위 요소를 리턴하는 경우, ()로 감싸야 한다.
- 자식들을 바로 랜더링하고 싶으면, <>자식들</>를 사용한다. => Fragment
- 자바스크립트 표현식을 사용하려면, {표현식}를 이용한다.
- if 문은 사용할 수 없다.
- 삼항 연산자 혹은 &&를 사용한다.
- style을 이용해 인라인 스타일링이 가능하다.
- class대신 className을 사용해 class를 적용한다.
- 자식요소가 있으면, 꼭 닫아야하고, 자식 요소가 없으면 열면서 닫아야 한다.
- <p>Hello</p>
- <br />
댓글남기기