JSX
JavaScript + (XML/HTML)
React์์ ์ฌ์ฉ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ์ผ๋ก, XML ๋๋ HTML๊ณผ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. JSX๋ฅผ ์ฌ์ฉํ๋ฉด React ์์๋ฅผ ์ข ๋ ๊ฐํธํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ React์์ UI๋ฅผ ํํํ๋ ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ๋ด์ ๋งํฌ์
์ ์์ฑํ ์ ์๊ฒ ํด์ค๋๋ค.
๋์
JSX ๋ฌธ๋ฒ์ผ๋ก ์์ฑํ๋ ์ฝ๋๋ React ์ createElement ํจ์๋ฅผ ์ฌ์ฉํ๋ JavaScript ์ฝ๋๋ก ๋ณํ๋ฉ๋๋ค.
JSX
JavaScript ๋ก ๋ณํ
React ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑ
๊ฐ์ DOM
์ค์ DOM
๋ฌธ๋ฒ์ฌํญ
1.
ํ๋์ ๋ฃจํธ ์๋ฆฌ๋จผํธ
2.
์์ (Element)
3.
ํํ์ (Expression)
4.
์์ฑ ์ฌ์ฉ
5.
JSX ๋ด๋ถ์ ์กฐ๊ฑด๋ฌธ
6.
JSX ๋ด๋ถ์ ๋ฐ๋ณต๋ฌธ
7.
์คํ์ผ ์ ์ฉ
a.
์ธ๋ผ์ธ ์คํ์ผ ๋ฐฉ์
b.
ํด๋์ค ์ง์ ๋ฐฉ์
8.
์ฃผ์
ํ๋์ ๋ฃจํธ ์๋ฆฌ๋จผํธ
์ต์์(๋ฃจํธ) ์๋ฆฌ๋จผํธ๋ ํ๋๋ก, ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ธ์ผํ๋ค.
JSX ๋ก ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ ์ฝ๋๋ React ๊ฐ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๋ ์ฝ๋(React.createElement)๋ก ๋ณํํฉ๋๋ค. ๊ทธ ํ ๋ ๋๋ง ํจ์๋ฅผ ํธ์ถํ๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก ๋ ๋๋ง ํฉ๋๋ค. ์ด๋ React ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก Virtual DOM ์ ์์ฑํฉ๋๋ค.
React ์ Virtual DOM ์ ๊ฐ ์ปดํฌ๋ํธ ํ๋๋ฅผ ํ๋์ ๋
ธ๋๋ก ํ์ฌ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ด ๋๋ฌธ์, ๊ฐ์ DOM ์ ์์ฑํ๊ธฐ ์ํด์ ํธ๋ฆฌ ๊ตฌ์กฐ ํํ๋ก ์ต์์์ ํ๋์ ๋
ธ๋๋ฅผ ๊ฐ์ง ํํ๋ก ์ ๊ณต๋์ด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฆฌ๋จผํธ ๋ค์ ํ๋์ ๋ฃจํธ ์๋ฆฌ๋จผํธ๋ก ๊ฐ์ธ์ ์์ฑํด์ผํฉ๋๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฃจํธ๋ ํธ๋ฆฌ์ ์์ ์ง์ ์ด๋ฉฐ, ๊ฐ ๋
ธ๋๋ ํ์ ๋
ธ๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. React๊ฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์
๋ฐ์ดํธํ๊ธฐ ์ํด์๋ ํธ๋ฆฌ์ ์์์ ์ด ๋๋ ๋ฃจํธ ์๋ฆฌ๋จผํธ๊ฐ ํ์ํฉ๋๋ค.
React์์๋ ์ปดํฌ๋ํธ์ ๋ฐํ๊ฐ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฃจํธ ์๋ฆฌ๋จผํธ๋ฅผ ์ง์ ๋ฐํํ๋ ๊ฒ์ด ํ์ฉ๋์ง ์์ต๋๋ค. ๋ฐํ๋๋ JSX๋ ํ๋์ ๋ฃจํธ ์๋ฆฌ๋จผํธ๋ก ๊ฐ์ธ์ ธ ์์ด์ผ ํฉ๋๋ค.
์์ ์๋ชป๋ ์์์์์ฒ๋ผ ์ฌ๋ฌ ๋ฃจํธ ์๋ฆฌ๋จผํธ๋ฅผ ์ง์ ๋ฐํํ๋ฉด React๊ฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํ๋์ ๋ถ๋ชจ ์๋ฆฌ๋จผํธ๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค.
ํ๋๊ทธ๋จผํธ (Fragment)
์ฌ๋ฌ ์์๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํน์ํ ํํ์ ์ปดํฌ๋ํธ
๋ฌธ๋ฒ
<></>
JavaScript
๋ณต์ฌ
<React.Fragment></React.Fragment>
JavaScript
๋ณต์ฌ
function MyComponent() {
return (
<>
<h1>Title</h1>
<p>Paragraph content</p>
</>
);
}
JavaScript
๋ณต์ฌ
function MyComponent() {
return (
<React.Fragment>
<h1>Title</h1>
<p>Paragraph content</p>
</React.Fragment>
);
}
JavaScript
๋ณต์ฌ
Fragment๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถ๋ชจ ์๋ฆฌ๋จผํธ๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ์ง ์๊ณ ๋ ์ฌ๋ฌ ๊ฐ์ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ถํ์ํ DOM ์์๋ฅผ ์์ฑํ์ง ์๊ณ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ์ ํ ๋ ์ ์ฉํฉ๋๋ค.
๋ช
์์ ์ผ๋ก React.Fragment๋ฅผ ์ฌ์ฉํ์ฌ ํํํ ์๋ ์์ต๋๋ค
<></> vs <div></div>
: ํ๋๊ทธ๋จผํธ(Fragment) ๋ก ๋ฌถ์ ๊ฒฝ์ฐ๋ ์ค์ ๋ก ๋ถ๋ชจ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
โข
<></> ์ฌ์ฉ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fragment</title>
</head>
<body>
<h1>Title</h1>
<p>Paragraph content</p>
</body>
</html>
JavaScript
๋ณต์ฌ
โข
<div></div> ์ฌ์ฉ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>div</title>
</head>
<body>
<div>
<h1>Title</h1>
<p>Paragraph content</p>
</div>
</body>
</html>
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ (Element)
๋ธ๋ผ์ฐ์ ์ ์ปจํ
์ธ ๋ฅผ ํํํ๋ ํ๋์ ๋จ์
์๋ฆฌ๋จผํธ๋ React์์ ์ปดํฌ๋ํธ๊ฐ ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ํ๋ด๋ ๋ด์ฉ์ ํํํ๋ ๋จ์์
๋๋ค. React์์ ์๋ฆฌ๋จผํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๊ฐ ์๋ฆฌ๋จผํธ๋ ๊ฐ์ DOM (Virtual DOM)์์ ์ปดํฌ๋ํธ์ ์ธ์คํด์ค์ ๋์ํฉ๋๋ค.
(HTML์์๋ ๋ช๋ช ํ๊ทธ์์ ๋ซ๋ ํ๊ทธ๊ฐ ์๋ต๋์ด๋ ์ ํจํฉ๋๋ค.)
<input type="text" name="test">
HTML
๋ณต์ฌ
<input type="text" name="test">
HTML
๋ณต์ฌ
<input type="text" name="test" />
HTML
๋ณต์ฌ
์ข
๋ฃ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ / ๋ฅผ ๋ฐ๋์ ๋ช
์ํด์ผํ๋ค.
์๋ฆฌ๋จผํธ์ ์์ฑ
React ์๋ฆฌ๋จผํธ๋ JavaScript ํํ์์ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค. JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด HTML๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ผ๋ก React ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
const element = <h1>Hello, World!</h1>;
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ํน์ง
React ์๋ฆฌ๋จผํธ๋ ๊ฐ์ DOM์์ ์ปดํฌ๋ํธ์ ์ํ ๋ณํ์ ๋ฐ๋ผ ์
๋ฐ์ดํธ๋๊ณ , React๊ฐ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ค์ DOM์ ๋ณ๊ฒฝ ์ฌํญ์ ์ต์ํํฉ๋๋ค.
const element = <p>{new Date().toLocaleTimeString()}</p>;
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ๋ ๋๋ง
React ์๋ฆฌ๋จผํธ๋ ReactDOM.render()๋ ์ปดํฌ๋ํธ์ ๋ ๋ ๋ฉ์๋ ๋ฑ์ ํตํด ์ค์ DOM์ ๋ ๋๋ง๋ฉ๋๋ค.
ReactDOM.render(element, document.getElementById('root'));
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ๊ตฌ์ฑ์์
โข
์ปจํ
์ธ
โฆ
ํ
์คํธ
โฆ
์์ ์๋ฆฌ๋จผํธ
โข
์์ฑ
์๋ฆฌ๋จผํธ์ ํ ์คํธ ์ปจํ ์ธ ๋ง ๊ตฌ์ฑ
const element = <h1>Hello, World!</h1>;
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ์์ ์๋ฆฌ๋จผํธ ๊ตฌ์ฑ
const element = (
<div>
<h1>Title</h1>
<p>Paragraph content</p>
</div>
);
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ ์์ฑ
JSX์์๋ HTML๊ณผ ์ ์ฌํ ์์ฑ์ ์ฌ์ฉํ ์ ์์ง๋ง ๋ช ๊ฐ์ง ์ฐจ์ด๊ฐ ์์ต๋๋ค.
html ๊ณผ ์ฐจ์ด๊ฐ ์๋ React ์๋ฆฌ๋จผํธ ์์ฑ
1.
class ์์ฑ
2.
style ์์ฑ
class ์์ฑ
JSX์์๋ HTML์ class ์์ฑ์ className์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ JavaScript์์ class๋ ์์ฝ์ด์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
// HTML
<div class="my-class">Hello</div>
// JSX
<div className="my-class">Hello</div>
HTML
๋ณต์ฌ
style ์์ฑ
HTML์์๋ style ์์ฑ์ ๋ฌธ์์ด๋ก CSS๋ฅผ ์ง์ ํ์ง๋ง, JSX์์๋ ๊ฐ์ฒด ํํ๋ก ์คํ์ผ์ ์ง์ ํฉ๋๋ค.
// HTML
<div style="color: red; font-size: 16px;">Hello</div>
// JSX
<div style={{ color: 'red', fontSize: '16px' }}>Hello</div>
HTML
๋ณต์ฌ
ํํ์ (Expression)
{ } ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์, JavaScript ์ ์์, ๋ณ์, ํจ์ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ๋ฒ
.JSX ๋ด์์ ์ค๊ดํธ {}๋ฅผ ์ฌ์ฉํ์ฌ JavaScript ํํ์์ ์ฝ์
ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํํ์์ ๋์ ์ผ๋ก ๊ฐ์ ์์ฑํ๊ฑฐ๋ ๋ณ์, ํจ์ ๋ฑ์ ์ฌ์ฉํ ๋ ์ ์ฉํฉ๋๋ค.
import React from 'react';
import ReactDOM from 'react-dom';
// ๋ณ์ ์ ์ธ
const name = 'aloha';
// ํจ์ ์ ์
const formatName = (name) => {
return name.toUpperCase();
};
// JSX๋ฅผ ์ง์ ๋ ๋๋ง
const element = (
<div>
{/* ๋ณ์ ์ฌ์ฉ */}
<p>Hello, {name}!</p>
{/* ํจ์ ํธ์ถ */}
<p>Formatted Name: {formatName(name)}</p>
{/* ์ฐ์ ์ฐ์ฐ */}
<p>2 + 2 = {2 + 2}</p>
</div>
);
// JSX ๋ ๋๋ง
ReactDOM.render(element, document.getElementById('root'));
JavaScript
๋ณต์ฌ
JSX ๋ด๋ถ์ ์กฐ๊ฑด๋ฌธ
JSX ์์์๋ ์ผ๋ฐ์ ์ธ JavaScript์ if, switch ๋ฌธ์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋์ ์ JSX ๋ด์์๋ JavaScript ํํ์์ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฃผ๋ก ์กฐ๊ฑด๋ถ ์ฐ์ฐ์(์ผํญ ์ฐ์ฐ์)๋ ๋
ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ํ์ฉํ์ฌ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ๊ตฌํํฉ๋๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ถ๋ ฅ ๋๋ ๋ฏธ์ถ๋ ฅ ํด์ผํ ์๋ฆฌ๋จผํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
1.
์กฐ๊ฑด๋ถ ์ฐ์ฐ์(์ผํญ ์ฐ์ฐ์)
2.
AND ๋
ผ๋ฆฌ ์ฐ์ฐ์&&
3.
OR ๋
ผ๋ฆฌ ์ฐ์ฐ์ ||
์กฐ๊ฑด๋ถ ์ฐ์ฐ์(์ผํญ ์ฐ์ฐ์)
const X = โ;
const element = (
<div>
{ X ? <p>A</p> : <p>B</p>}
</div>
);
JavaScript
๋ณต์ฌ
โข
X ๊ฐ true ์ผ ๋
<p>A</p> ๋ฐํ
โข
X ๊ฐ false, null, undefined, 0, NaN , โโ ์ผ ๋
<p>B</p> ๋ฐํ
AND ๋ ผ๋ฆฌ ์ฐ์ฐ์&&
const hasPermission = โ;
const element = (
<div>
{hasPermission && <p>Permission granted!</p>}
</div>
);
JavaScript
๋ณต์ฌ
โข
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ true ์ผ ๋,
์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์ ๋ฐํ
โข
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ false, null, undefined, 0, NaN , โโ ์ผ ๋
์ถ๋ ฅ 
OR ๋ ผ๋ฆฌ ์ฐ์ฐ์ ||
const isGuest = true;
const element = (
<div>
{isGuest || <p>Welcome, Guest!</p>}
</div>
);
JavaScript
๋ณต์ฌ
โข
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ false, null, undefined, 0, NaN , โโ ์๋ ๋
์ผ์ชฝ ํผ์ฐ์ฐ์ ๋ฐํ
โข
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ false, null, undefined, 0, NaN , โโ ์ผ ๋
์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์ ๋ฐํ
JSX ๋ด๋ถ์ ๋ฐ๋ณต๋ฌธ
JSX ๋ด๋ถ์์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๋๋, ์ฃผ๋ก ๋ฐฐ์ด์ map() ํจ์๋ก ๋ฐ๋ณตํ์ฌ ๊ตฌํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํํ์ { } ์์ฑํ๋ค.
JSX ๋ด๋ถ์์๋ for ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) => (
<li key={number.toString()}>{number}</li>
));
const element = (
<div>
<h2>Number List</h2>
<ul>{listItems}</ul>
</div>
);
JavaScript
๋ณต์ฌ
์์ ์ฝ๋์์ map() ํจ์๋ numbers ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์๋ก์ด <li> ์์๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ listItems ๋ฐฐ์ด์ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด listItems ๋ฐฐ์ด์ JSX ๋ด์์ {} ์ค๊ดํธ๋ก ๊ฐ์ธ์ ๋ ๋๋งํฉ๋๋ค.
๋ฐ๋ณต๋๋ ์์๋ค์๋ ๊ณ ์ ํ key ์์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๊ฒ์ React๊ฐ ๊ฐ ์์๋ฅผ ์๋ณํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋๋ฐ, ๋ณดํต ๊ฐ ํญ๋ชฉ์ ๊ณ ์ ํ ์๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ ์ฝ๋์์๋ key={number.toString()}๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๊ณ ์ ํ ํค๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์ ์ํํ๋ฉด์ JSX ์์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
key ์์ฑ
: JSX ์์์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ์๋ฆฌ๋จผํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ, ๊ฐ ์๋ฆฌ๋จผํธ์ key ์์ฑ์ ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก key ์์ฑ์ ๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ ์๋ณํ๋ ๊ณ ์ ํ ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฐฐ์ด์ index ๋ฅผ key ์์ฑ์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
์ธ๋ฑ์ค๋ ๋ฐฐ์ด ๋ด์์์ ์์น๋ฅผ ๋ํ๋ด๋ ๊ฐ์ผ๋ก, ํญ๋ชฉ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋ ๋ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ธ๋ฑ์ค๋ฅผ key๋ก ์ฌ์ฉํ๋ฉด ๊ณ ์ ์ฑ์ด ๋ณด์ฅ๋์ง ์์ ์ ์์ต๋๋ค.
const data = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' },
];
const listItems = data.map(item => (
<li key={item.id}>{item.name}</li>
));
JavaScript
๋ณต์ฌ
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํญ๋ชฉ์ ๊ณ ์ ํ id๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ React๊ฐ ์๋ฆฌ๋จผํธ ๊ฐ์ ๋ณํ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ์งํ ์ ์์ต๋๋ค.
์คํ์ผ ์ ์ฉ
1.
์ธ๋ผ์ธ ์คํ์ผ ๋ฐฉ์
2.
ํด๋์ค ์ง์ ๋ฐฉ์
์ธ๋ผ์ธ ์คํ์ผ ๋ฐฉ์
์ธ๋ผ์ธ ์คํ์ผ์ HTML ์๋ฆฌ๋จผํธ์ style ์์ฑ์ ์ฌ์ฉํ์ฌ ์คํ์ผ์ ์ง์ ์ ์ํ๋ ๋ฐฉ์์
๋๋ค. ์ด ๋ฐฉ์์ ํด๋น ์๋ฆฌ๋จผํธ์๋ง ์ ์ฉ๋๋ ์คํ์ผ์ ์ ์ํ ์ ์์ด ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํ์ผ์ JavaScript ๊ฐ์ฒด์ ํํ๋ก ์์ฑ๋๋ฉฐ, ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ์คํ์ผ ์์ฑ์ ์ง์ ํฉ๋๋ค.
โข
๋ฌธ๋ฒ
style={ { ์คํ์ผ์์ฑ1 : '๊ฐ', ์คํ์ผ์์ฑ2 : '๊ฐ' } }
JavaScript
๋ณต์ฌ
โข
style ์์ฑ ๋ด์ ์ค๊ดํธ { } ๋ฅผ ์ฌ์ฉํ์ฌ JavaScript ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ์คํ์ผ์ ์ง์ ํฉ๋๋ค.
โข
๊ฐ์ฒด { } ๋ก ์ง์ ํ ์คํ์ผ์ ํํ์์ผ๋ก { } ์ถ๋ ฅํฉ๋๋ค.
โข
CSS ์์๋ ์คํ์ผ ์์ฑ๋ช
์ โ-โ ์ผ๋ฐฅ ์ผ์ด์ค(kebab-case)์์ฑํ์ง๋ง,
JSX ์์๋ ์คํ์ผ ์์ฑ๋ช
์ ์นด๋ฉ ์ผ์ด์ค(CamelCase)๋ก ์์ฑํด์ผ ํฉ๋๋ค.
const element = (
<div style={{ color: 'blue', fontSize: '16px', backgroundColor: 'lightgray' }}>
This is a text with inline styles.
</div>
);
JavaScript
๋ณต์ฌ
ํด๋์ค ์ง์ ๋ฐฉ์
ํด๋์ค ์ง์ ๋ฐฉ์์ CSS ํด๋์ค๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ , ํด๋น ํด๋์ค๋ฅผ HTML ์๋ฆฌ๋จผํธ์ ์ ์ฉํ๋ ๋ฐฉ์์
๋๋ค. ์ด ๋ฐฉ์์ ์ฌ๋ฌ ์๋ฆฌ๋จผํธ์ ๋์ผํ ์คํ์ผ์ ์ ์ฉํ๊ฑฐ๋, ์ ์ญ ์คํ์ผ ์ํธ๋ฅผ ํ์ฉํ ๋ ํจ๊ณผ์ ์
๋๋ค.
โข
styles.css
.customClass {
color: red;
font-size: 18px;
background-color: lightyellow;
}
CSS
๋ณต์ฌ
โข
Test.jsx
// React ์ปดํฌ๋ํธ์์ ํด๋์ค ์ ์ฉ
import React from 'react';
import './styles.css';
const element = (
<div className="customClass">
This is a text with styles applied using a CSS class.
</div>
);
JavaScript
๋ณต์ฌ
JSX์์๋ HTML์ class ์์ฑ์ className์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ JavaScript์์ class๋ ์์ฝ์ด์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฃผ์
JSX ์ฃผ์์ JavaScript XML (JSX) ์ฝ๋ ๋ด์์ ์ฃผ์์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. JSX ์ฃผ์์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง๋์ง ์๊ณ , ์์ค ์ฝ๋์ ๊ฐ๋
์ฑ์ ํฅ์์ํค๊ณ ์ฝ๋์ ์ค๋ช
์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
1.
ํ ์ค ์ฃผ์
2.
์ฌ๋ฌ ์ค ์ฃผ์
ํ ์ค ์ฃผ์
const element = (
<div>
{/* ์ด ๋ถ๋ถ์ ํ๋ฉด์ ๋ํ๋์ง ์๋ ํ ์ค ์ฃผ์์
๋๋ค. */}
<p>Hello, World!</p>
</div>
);
JavaScript
๋ณต์ฌ
์์ ์์ ์์ {/* ... */}๋ ํ ์ค ์ฃผ์์ ๋ํ๋ด๋ฉฐ, ์ด ๋ถ๋ถ์ ํ๋ฉด์ ๋ํ๋์ง ์์ต๋๋ค.
์ฌ๋ฌ ์ค ์ฃผ์
const element = (
<div>
{/*
์ฌ๋ฌ ์ค ์ฃผ์์ ์์์
๋๋ค.
์ฌ๋ฌ ์ค๋ก ์ฃผ์์ ์์ฑํ ์ ์์ต๋๋ค.
*/}
<p>Hello, World!</p>
</div>
);
JavaScript
๋ณต์ฌ
์ฌ๋ฌ ์ค ์ฃผ์์ {/* ... */} ์์ ์ฌ๋ฌ ์ค์ ์ฃผ์์ ์์ฑํ ์ ์์ต๋๋ค.
JSX ์ฃผ์์ React ์๋ฆฌ๋จผํธ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ฉฐ, ์ปดํ์ผ๋๋ฉด ๋ธ๋ผ์ฐ์ ์๋ ํฌํจ๋์ง ์์ต๋๋ค. ์ฃผ์์ ์ฃผ๋ก ์ฝ๋์ ํน์ ๋ถ๋ถ์ ๋ํ ์ค๋ช
์ด๋, ์์์ ์ธ ์ฝ๋ ๋นํ์ฑํ ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.