const element = <h1>Hello, world!</h1>;
์ด๊ฒ์ ๋ฌธ์์ด๋ HTML๋ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ๋ ๋ฌธ๋ฒ JSX์ด๋ค.
JSX๋ฅผ ํตํด UI ๋ก์ง์ ์ค๋ช
ํด ์ค ์ ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์ํธ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๐ JSX๋
๋ฆฌ์ํธ์์ ๋ ๋๋ง ๋ก์ง์ด UI๋ก์ง๊ณผ ์ฐ๊ฒฐ๋๋ค๋ ์ฌ์ค์ ๋ฐ์๋ค์ธ๋ค.
๋งํฌ์ ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์๋ "์ปดํฌ๋ํธ"๋ผ๋ ์ ๋์ผ๋ก ๋ถ๋ฆฌํ๋ค.
HTML์ฒ๋ผ ์๊ฒผ์ผ๋ ๋งํฌ์ ์ธ์ด๊ฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ๋ฐ๋ฒจ๋ก ๋ณํ์ด ๋์ด์ง๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํ ์ ์๋ค.
const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;
function getGreeting(user) {
if (user) {
return <h1>Hello, {formatName(user)}!</h1>;
}
return <h1>Hello, Stranger.</h1>;
}
JSX๋ ์ค๊ดํธ ์์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ฌ์ฉํ ์ ์๋ค.
name์ด๋ผ๋ ๋ณ์์ ํ ๋น๋ ๊ฐ์ด JSX์์ ํํ๋์ด์ง๊ณ , if์ for๋ฌธ ๋ฑ๊ณผ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
function NumberList(props) {
const numbers = props.numbers;
return (
<ul>
{numbers.map((number) =>
<ListItem key={number.toString()}
value={number} />
)}
</ul>
);
}
์๋ฐ์คํฌ๋ฆฝํธ์ map()
ํจ์๋ฅผ ์ฌ์ฉํด JSX๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํด์ฃผ๋ ๋ฐฉ์์ด๋ค.
ํด๋น ๋ฐฉ์์์ ์ฃผ์ํด์ผ ํ ์ ์ Key๋ฅผ ์ค์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
Key๋ ์๋ฆฌ๋จผํธ์ ๊ณ ์ ์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ ์ ์๋ฆฌ๋จผํธ์ ์ง์ ํด์ค์ผํ๊ณ , <li>
ย ์๋ฆฌ๋จผํธ๊ฐ ์๋๋ผ ๋ฐฐ์ด์ย <ListItem />
ย ์๋ฆฌ๋จผํธ๊ฐ key๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
Key๋ ํ์ ๋ฐฐ์ด ์์์๋ง ๊ณ ์ ์ฑ์ ์งํค๋ฉด ๋๊ณ , ์ ์ฒด ๋ฒ์๋ฅผ ๊ณ ๋ คํ ํ์๋ ์๋ค.
<h1 className="title" onClick={onload}>Hello!!!</h1>
JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ camelCase ํ๋กํผํฐ๋ก ์ฌ์ฉํด์ค์ผ ํ๋ค.
* class โ className
* tabindex โ tabIndex
* onclick โ onClick