JSX
는 JavaScript
가 확장된 문법이지만, 브라우저가 바로 실행할 수 있는 JavaScript
코드가 아니다.
브라우저가 이해할 수 있는 JavaScript
코드로 변환을 해주어야 한다.
이때 사용하는 것이 바로 Babel
이다.
Babel
은 JSX
를 브라우저가 이해할 수 있는 JavaScript로 컴파일한다.
-> 컴파일 후, JavaScript
를 브라우저가 읽고 화면에 렌더링할 수 있다.
React
에서는 DOM
과 다르게 CSS,JSX
문법만을 가지고 웹 애플리케이션을 개발할 수 있다.
-> 즉, 컴포넌트 하나를 구현하기 위해 필요한 파일이 줄었고, 한눈에 컴포넌트를 확인할 수 있다.
JSX를 사용하면 JavaScript만으로 마크업(markup)형태의 코드를 작성하여 DOM에 배치할 수 있다.
->
<div> // 최상위 태그 (opening)
<div>
<h1>안녕</h1>
</div>
<div>
<h2>하세요</h2>
</div>
</div> // 최상위 태그 (closing)
<div className="abc">hi</div>
function App() {
const name = 'hyo';
return (
<div>
Hello, {name}!!!
</div>
)
}
function Component() { // 이렇게 대문자로 작성된 JSX컴포넌트를 따로 사용자 정의 컴포넌트라고 부른다.
return <div>Hi!!</div>
}
<div>
{
name === 'hyo' ? <p>일치</p> : <p>불일치</p>
}
</div>
const contents = [{id: 1, name: 'hyo', age: 5}, {id: 2, name: 'woo', age: 3}]
function Component() {
const content = contents.map((el) => {
<div key={el.id}> // key JSX 속성을 넣음
<h2>{el.name}</h2>
<p>{el.age}</p>
</div>
})
return (
<div>
{content}
</div>
)
}