JSX
# JSX란
JSX는 자바스크립트의 확장된 문법이다. 기존의 웹 페이지와는 다르게 html과 자바스크립트를 분리하지 않고, 둘 다 포함하는 컴포넌트라는 것을 사용한다. 간단히 표현하자면 React에서 사용하는 html인데, 자바스크립트 문법이 적용된 것이라고 할 수 있을 것 같다.
export default function App() {
const text = "hello";
const arr = [0, 1, 2];
return (
<div>
<h1>{text}</h1>
<div>{arr.map((item) => <div>{item}</div>)}</div>
</div>
);
}
이렇게 하나의 파일에 html과 자바스크립트가 모두 있다. 또한, 자바스크립트에서 표현된 변수와 함수를 바로 html에 적용할 수 있다. 이렇게 React에서는 JSX로 표현된 html을 사용한다.
# 특징
1. 컴포넌트에 여러 엘리먼트 요소가 있다면 반드시 하나의 부모 요소로 감싸줘야 한다.
// 이렇게 작성하면 안 됨
export default function App() {
// 생략
return (
<h1>hello</h1>
<h1>world</h1>
);
}
// 이렇게 하나의 부모 요소로 감싸주기
export default function App() {
// 생략
return (
<div>
<h1>hello</h1>
<h1>world</h1>
</div>
);
}
최상단에 모든 요소를 감싸를 부모 요소가 무조건 하나 있어야 한다.
2. onclick이 아니라 onClick, onchange가 아니라 onChange, ...
export default function App() {
return (
<div onClick={함수}>
<h1>hello</h1>
<h1>world</h1>
</div>
);
}
요소의 속성을 적어줄 때 카멜 표기법으로 작성한다.
3. class가 아닌 className이라고 작성한다.
export default function App() {
return (
<div className="container">
<h1>hello</h1>
<h1>world</h1>
</div>
);
}
JSX는 자바스크립트의 확장 문법이다. 따라서, 요소의 class를 지정할 때 class라고만 적으면 안 된다. 자바스크립트의 class라는 문법과 이름이 겹치기 때문!
4. 데이터 바인딩 매우 쉬움
기존의 html, 자바스크립트와는 다르게 getElementById() 같은 거 없어도 변수와 함수를 넘길 수 있다.
export default function App() {
const text = "hello";
const arr = [0, 1, 2];
return (
<div>
<h1>{text}</h1>
<div>{arr.map((item) => <div>{item}</div>)}</div>
</div>
);
}
중괄호로 묶어서 바로 넘기면 된다.
5. 객체 형식으로 style 지정 가능
export default function App() {
return (
<div style={{ backgroundColor: "black", color: "white" }}>
<h1>hello</h1>
<h1>world</h1>
</div>
);
}
요소에 바로 style을 지정할 수 있다. 이때, 객체 형식으로 작성해주어야 한다.
참고 자료
'FE - Tools > React' 카테고리의 다른 글
[React] useParams 이용하기 (0) | 2022.12.22 |
---|---|
[React] useEffect와 useLayoutEffect의 차이 (0) | 2022.12.20 |
[React] useRef 이용해서 스크롤 특정 위치로 이동시키기 (0) | 2022.12.13 |
[React] 가상 DOM (0) | 2022.12.05 |
[React] React Hooks와 useState, useEffect (0) | 2022.12.04 |