[React] πŸš€ λ¦¬μ•‘νŠΈ μ•± μ‹œμž‘ν•˜κΈ° – 첫 번째 μ»΄ν¬λ„ŒνŠΈ λ§Œλ“€κΈ°

λ¦¬μ•‘νŠΈλ₯Ό μ΄ν•΄ν•˜λ €λ©΄ “μ»΄ν¬λ„ŒνŠΈ”λ₯Ό 직접 λ§Œλ“€μ–΄λ³΄λŠ” 게 κ°€μž₯ λΉ λ₯Έ κΈΈμž…λ‹ˆλ‹€.
이번 κΈ€μ—μ„œλŠ” λ¦¬μ•‘νŠΈ 앱을 λ§Œλ“œλŠ” 첫 단계뢀터, κΈ°λ³Έ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€κ³  μ‚¬μš©ν•˜λŠ” λ°©λ²•κΉŒμ§€ μ•„μ£Ό μ‰½κ²Œ μ•Œλ €λ“œλ¦΄κ²Œμš”.


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λ₯Ό 톡해 μ»΄ν¬λ„ŒνŠΈμ— 값을 전달할 수 μžˆλ‹€