3.1 선릉 우동 맛집 찾아냄
const element = <h1>Hello, world !!</h1>;
오늘은 갑자기 코드 먼저 던졌다.
뒤에 설명하기엔 이만한게 없기에 그랬으니 양해 부탁드립니다.
위에 희한한 태그 문법은 문자열도, HTML도 아니다.
이걸 바로 JSX라고 하며 Javascript를 확장한 문법이다. HTMl을 공부하고 사용해 본 사람들은 이걸 굳이 이렇게 쓴다고?
라는 생각을 갖고 있을 수 있겠지만, 이 JSX는 Javascript의 모든 기능이 포함되어 있다. 뒤에서 좀 더 자세하게 예제를 다뤄볼 예정이니 인내심을 갖고 스크롤을 해보자.
(JSX는 UI가 어떻게 생겨야하는지 설명하기 위해 React와 함께 사용할 것 것을 권장한다.)
// 실제로 작성한 JSX문법
function App() {
return (
<h1>Hello, React !</h1>
);
}
// 위와 같이 작성하면, 바벨이 다음과 같이 자바스크립트로 해석하여 준다.
function App() {
return React.createElement("h1", null, "Hello, React !");
}
ex) Error Case
// Fail to compile
// parsing error : adjacent JSX elements be wrapped in an enclosing tag
// Did you want a JSX fragment <>...</>?
function App() {
return (
<div>Hello</div>
<div>GodDaeHee!</div>
);
}
ex) Example
function App() {
return (
<div>
<div>Hello</div>
<div>GodDaeHee!</div>
</div>
);
}
위와 같이 제일 바깥 <div>
로 묶어서 하나의 DOM 트리구조로 이루어져야 한다.
{}
로 감싸주면 된다.ex) Example Code
function App() {
const name = "React JSX";
return (
<div>
<div>Hello</div>
<div>{name}!</div>
</div>
)
}
// Hello React JSX!
ex) Example Code (외부)
function App() {
let desc='';
const loginYn = 'Y';
if(loginYn === 'Y'){
desc = <div>회원 입니다.</div>
} else {
desc = <div>비회원 입니다.</div>
}
return (
<div>
{desc}
</div>
)
}
// 회원 입니다.
ex) Example Code (내부)
function App() {
const loginYn = 'Y';
return(
<div>
<div>
{loginYn === 'Y' ? (
<div>회원 입니다.</div>
) : (
<div>비회원 입니다.</div>
)}
</div>
</div>
)
}
ex) Example Code
function App() {
const style = {
backgroundColor: 'blue',
fontSize: '24px'
};
return (
<div style={style}>Hello, React JSX!</div>
);
}
className
을 사용한다.ex) className
function App() {
const style = {
backgroundColor: 'red',
fontSize: '12px'
};
return (
<div className="testClass">Hello, React JSX!</div>
)
}
개발자가 JSX를 작성하기만 하면 리액트 엔진은 JSX를 기존 자바스크립토 해석하여 준다.
앞으로 사용할 React에서 많이 보게 될 문법이니 충분히 익히고 React에 뛰어들어도 괜찮을 것 같다.
잘보고 갑니다~