๋ฆฌ์กํธ๋ฅผ ์ดํดํ๋ ค๋ฉด “์ปดํฌ๋ํธ”๋ฅผ ์ง์ ๋ง๋ค์ด๋ณด๋ ๊ฒ ๊ฐ์ฅ ๋น ๋ฅธ ๊ธธ์
๋๋ค.
์ด๋ฒ ๊ธ์์๋ ๋ฆฌ์กํธ ์ฑ์ ๋ง๋๋ ์ฒซ ๋จ๊ณ๋ถํฐ, ๊ธฐ๋ณธ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊น์ง ์์ฃผ ์ฝ๊ฒ ์๋ ค๋๋ฆด๊ฒ์.
1. ๐งฐ ๋ฆฌ์กํธ ์ฑ ๋ง๋๋ ๋ฒ
๋ฆฌ์กํธ๋ฅผ ์ฒ์๋ถํฐ ์ค์นํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ Vite ๋๋ Create React App์ ์ฐ๋ ๊ฒ์
๋๋ค.
์์ฆ์ Vite๊ฐ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ด์.
# ์ค์น (Node.js๊ฐ ํ์ํด์)
npm create vite@latest my-react-app --template react
cd my-react-app
npm install
npm run dev
๐ http://localhost:5173
์ ์ ์ํ๋ฉด ๋ฆฌ์กํธ ์ฑ์ด ์คํ๋ฉ๋๋ค!
2. ๐ ํด๋ ๊ตฌ์กฐ ๊ฐ๋จํ ๋ณด๊ธฐ
my-react-app/
โโ src/
โ โโ App.jsx โ ์ฐ๋ฆฌ๊ฐ ํธ์งํ ๋ฉ์ธ ์ปดํฌ๋ํธ
โ โโ main.jsx โ ์ฑ ์์ ์ง์ (entry point)
โโ index.html
โโ package.json
์ฐ๋ฆฌ๋ App.jsx
ํ์ผ์์ ํ๋ฉด์ ๋ํ๋ ๋ด์ฉ์ ์์ฑํ ๊ฑฐ์์.
3. ๐งฉ ์ฒซ ๋ฒ์งธ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
์ปดํฌ๋ํธ๋ ๊ทธ๋ฅ ํจ์ ํ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
function Hello() {
return <h1>์๋
ํ์ธ์, React!</h1>;
}
์ด์ ์ด ์ปดํฌ๋ํธ๋ฅผ App.jsx
์์์ ์ฌ์ฉํด๋ณผ ์ ์์ด์.
function App() {
return (
<div>
<Hello />;
</div>;
);
}
<Hello />
๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ HTML ํ๊ทธ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
๐ผ๏ธ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ
์๋ ๊ทธ๋ฆผ์ ์ปดํฌ๋ํธ๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค:

App ์ปดํฌ๋ํธ๊ฐ Hello ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ค๊ณ , ์ต์ข ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์๋ “์๋ ํ์ธ์, React!”๊ฐ ๋ํ๋ฉ๋๋ค.
4. ๐ฃ๏ธ ๊ผญ ์์๋ ๋ฌธ๋ฒ 2๊ฐ์ง
- ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์!
hello()
โ โHello()
โ - return ์์๋ JSX ์ฌ์ฉ
JSX๋ JavaScript ์์ HTML์ฒ๋ผ ์ฝ๋๋ฅผ ์ธ ์ ์๋ ๋ฌธ๋ฒ์ ๋๋ค.
๐ ์ค์ต ํ: ๋๋ง์ ์ธ์ฌ๋ง ๋ง๋ค๊ธฐ
function Greeting(props) {
return <h2>์๋
ํ์ธ์, {props.name}๋</h>;
}
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์จ๋ณด์ธ์:
<Greeting name="์ง๋ฏผ" />;
<Greeting name="๋ฏผ์" />;
๐ก ๋ฆฌ์กํธ๋ props
(์์ฑ)์ ํตํด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ด์.
โ ์ ๋ฆฌ
- ๋ฆฌ์กํธ ์ฑ์ Vite๋ก ๊ฐ๋จํ ๋ง๋ค ์ ์๋ค
- ์ปดํฌ๋ํธ๋ ํจ์๋ค! โ
<์ปดํฌ๋ํธ์ด๋ฆ />
์ผ๋ก ์ฌ์ฉ - JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ HTML์ฒ๋ผ UI๋ฅผ ์์ฑํ๋ค
- props๋ฅผ ํตํด ์ปดํฌ๋ํธ์ ๊ฐ์ ์ ๋ฌํ ์ ์๋ค