// 1번
function App() {
return (
<div>
Hello, React
</div>
)
}
// 2번
function App() {
return React.createElement("div", null, "Hello, React");
}
1번의 코드를 2번으로 변환하여 실행
매번 React.createElement() 사용하면 매우 불편하기에 JSX를 사용
태그 문법
태그 문법을 사용해 React 요소의 트리 구조를 표현, HTML과 비슷한 형태를 가지며, 각 태그는 대소문자를 구분
JavaScript 표현식 삽입
JSX 내부에서 { }를 사용하여 JavaScript 표현식을 삽입할 수 있음
컴포넌트 렌더링
JSX는 사용자 정의 컴포넌트를 렌더링하는데 사용 됨, 컴포넌트의 이름은 항상 대문자로 시작
속성 및 자식 요소
JSX 태그는 속성을 가질 수 있으며, 자식 요소를 포함할 수 있음, 속성은 중괄호를 이용
<br />
<input />
function App() {
return (
<>
<h1>Hello</h1>
<h2>React</h2>
</>
)
}
function App() {
return (
<>
{ /*<h1>Hello</h1>*/ }
<h2>React</h2>
</>
)
}
class
대신 className
을 사용해 CSS 클래스를 설정for
속성 대신 htmlFor
을 사용function App() {
return (
<div>
<h1 className="h1">Hello, React</h1>
<label htmlFor="name">이름 : </label>
<input id="name" type="text" />
</div>
)
}
function App() {
const language = "React";
const name = 'h1'
return (
<h1 className={name}>
Hello, {language}
</h1>
)
}
<div style={ {color: 'blue', fontSize: '30px'} }>
글씨
</div>
if
문을 사용할 수 없지만 조건부 연산자 ?:
, &&
연산자를 사용하여 조건부 렌더링을 함function Greeting() {
const isLoggedIn = true;
return (
<div>
{isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign up.</h1>}
</div>
);
}
// <h1>Welcome back!</h1>
function Greeting() {
const isLoggedIn = false;
return (
<div>
{isLoggedIn && <h1>Welcome back!</h1>}
</div>
);
}
// null
function Greeting() {
const number = 0;
return number && <div>내용</div>;
}
// 0
map()
메서드를 사용해서 반복, 각 항목에 대해 컴포넌트를 렌더링 할 수 있음key
를 가져야 함function NumberList() {
const users = [
{ id: 1, name: '홍길동' }, { id: 2, name: '철수' }, { id: 3, name: '영희' }
];
return (
<ul>
{users.map(user =>
<li key={user.id}>{user.name}</li>
)}
</ul>
);
}