2023. 8. 14. 16:09ใStudy_Develop/React
JSX ๋?
- JSX(JavaScript XML)๋ js ์ xml์ ์ถ๊ฐํ ํ์ฅ ๋ฌธ๋ฒ์ด๋ค.
- JSX๋ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ๊ณต์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์๋๋ค.
- ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ธฐ ์ ์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ jsํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค.
// ์ค์ ์์ฑํ JSX ์์
function App() {
return (
<h1>Hello, GodDaeHee!</h1>
);
}
// ์์ ๊ฐ์ด ์์ฑํ๋ฉด, ๋ฐ๋ฒจ์ด ๋ค์๊ณผ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํด์ํ์ฌ ์ค๋ค.
function App() {
return React.createElement("h1", null, "Hello, GodDaeHee!");
}
- JSX๋ ํ๋์ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ HTML์ ๋์์ ์์ฑํ์ฌ ํธ๋ฆฌํ๋ค.
JSX ๋ฌธ๋ฒ
1. ๋ฐ๋์ ๋ถ๋ชจ ์์ ํ๋๊ฐ ๊ฐ์ธ๋ ํํ์ฌ์ผ ํ๋ค.
- Virtual DOM์์ ์ปดํฌ๋ํธ ๋ณํ๋ฅผ ๊ฐ์งํ ๋ ํจ์จ์ ์ผ๋ก ๋น๊ตํ ์ ์๋๋ก ์ปดํฌ๋ํธ ๋ด๋ถ๋ ํ๋์ Domํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๋ ๊ท์น์ด ์๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ ํํ์
- JSX ์์์๋ JSํํ์์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์์ฑํ๋ ค๋ฉด JSX๋ด๋ถ์์ ์ฝ๋๋ฅผ {}๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค.
- ์ ํจํ ๋ชจ๋ JSํํ์์ ๋ฃ์ ์ ์๋ค.
3. if(for ๋ฌธ) ๋์ ์ผํญ ์ฐ์ฐ์ ์ฌ์ฉ
- if ๊ตฌ๋ฌธ๊ณผ for ๋ฃจํ๋ jsํํ์์ด ์๋๊ธฐ ๋๋ฌธ์ jsx ๋ด๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด๋ถ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ ๋๋ง ์ jsx์ฃผ๋ณ ์ฝ๋์์ if๋ฌธ์ ์ฌ์ฉํ๊ฑฐ๋, {}์์์ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
3.1 ์ธ๋ถ์์ ์ฌ์ฉํ๊ธฐ
function App() {
let desc = '';
const loginYn = 'Y';
if(loginYn === 'Y') {
desc = <div>GodDaeHee ์
๋๋ค.</div>;
} else {
desc = <div>๋นํ์ ์
๋๋ค.</div>;
}
return (
<>
{desc}
</>
);
}
3.2 ๋ด๋ถ์์ ์ฌ์ฉ
function App() {
const loginYn = 'Y';
return (
<>
<div>
{loginYn === 'Y' ? (
<div>GodDaeHee ์
๋๋ค.</div>
) : (
<div>๋นํ์ ์
๋๋ค.</div>
)}
</div>
</>
);
}
3.3 AND ์ฐ์ฐ์ (&&) ์ฌ์ฉ
// ์กฐ๊ฑด์ด ๋ง์กฑํ์ง ์์ ๊ฒฝ์ฐ ์๋ฌด๊ฒ๋ ๋
ธ์ถ๋์ง ์๋๋ค.
function App() {
const loginYn = 'Y';
return (
<>
<div>
{loginYn === 'Y' && <div>GodDaeHee ์
๋๋ค.</div>}
</div>
</>
);
}
3.4 ์ฆ์ ์คํ ํจ์ ์ฌ์ฉ
function App() {
const loginYn = 'Y';
return (
<>
{
(() => {
if(loginYn === "Y"){
return (<div>GodDaeHee ์
๋๋ค.</div>);
}else{
return (<div>๋นํ์ ์
๋๋ค.</div>);
}
})()
}
</>
);
}
4. Ract DOM์ HTML ์ดํธ๋ฆฌ๋ทฐํธ ์ด๋ฆ ๋์ camelCase ํ๋กํผํฐ ๋ช ๋ช ๊ท์น ์ฌ์ฉ
4.1 JSX ์คํ์ผ๋ง
- JSX์์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ฐ๋ ค๋ฉด {}๋ฅผ ์จ์ผ ํ๊ธฐ ๋๋ฌธ์, ์คํ์ผ์ ์ ์ฉํ ๋์๋ ๊ฐ์ฒด ํํ๋ก ๋ฃ์ด ์ฃผ์ด์ผ ํ๋ค.
- ์นด๋ฉ ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑํด์ผ ํ๋ค. (font-size => fontSize)
4.2 class ๋์ className
- ์ผ๋ฐ HTML์์ CSS ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋์๋ class ๋ผ๋ ์์ฑ์ ์ฌ์ฉํ๋ค.
- JSX์์๋ class๊ฐ ์๋ className ์ ์ฌ์ฉํ๋ค.
5. JSX ๋ด์์ ์ฃผ์ ์ฌ์ฉ ๋ฐฉ๋ฒ
- jsx ๋ด์์ {/* ...*/} ์ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉ
function App() {
return (
<>
{/* ์ฃผ์์ฌ์ฉ๋ฐฉ๋ฒ */}
<div>Hello, GodDaeHee!</div>
</>
);
}
- ์์ ํ๊ทธ๋ฅผ ์ฌ๋ฌ์ค ์์ฑ ์์๋ , ๋ด๋ถ์์ //์ ํ์์ ์ฌ์ฉํ ์ ์๋ค.
function App() {
return (
<>
<div
// ์ฃผ์์ฌ์ฉ๋ฐฉ๋ฒ
>Hello, GodDaeHee!</div>
</>
);
}