
์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋๋ก์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ํ์ด์ค๋ถ๊ณผ ๊ฐ๋ณ ๊ฐ๋ฐ์ ๋ฐ ๊ธฐ์ ๋ค ๊ณต๋์ฒด์ ์ํด ์ ์ง๋ณด์ ๋๋ค.
React๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ์๋ AngularJS ๊ฐ์ ํ๋ ์์ํฌ๋ค์ด MVC๋ MVVM๊ณผ ๊ฐ์ ํจํด์ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์์ต๋๋ค
ํ์ง๋ง React๊ฐ ๋ฑ์ฅํ๋ฉด์ MVC ๋๋ MVVM ํจํด์ ๊ตญํ๋์ง ์๊ณ , ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์ํคํ ์ฒ๋ฅผ ์ฑํํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ UI๋ฅผ ๊ตฌ์ถํ๋ค๊ณ ํ๋๋ฐ์.
React์ ๋ ๋ค๋ฅธ ํต์ฌ ํน์ง์ ๊ฐ์ DOM์ ์ฌ์ฉ์ ๋๋ค. ๊ฐ์ DOM์ ์ค์ DOM์ ํจ์จ์ ์ธ ๋์ฒด์ ๋ก, ์ค์ DOM์ ๋นํด ๋ณ๊ฒฝ์ฌํญ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ, React๋ ๊ฐ์ DOM์ ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์ ๋จผ์ ์ ์ฉํ ๋ค์, ์ต์ข ์ ์ผ๋ก ์ค์ DOM๊ณผ ๋น๊ตํ์ฌ ์ค์ ๋ก ํ์ํ ๋ณ๊ฒฝ์ฌํญ๋ง์ ์ค์ DOM์ ๋ฐ์ํฉ๋๋ค.
์ด ๊ณผ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๋ํญ ํฅ์์ํค๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํฉ๋๋ค.
์ฆ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ HTML ๋ฌธ์๋ฅผ ์ฝ์ ํ ์์ฑํ๋ ํ์ด์ง์ ๊ฐ์ฒด ๊ธฐ๋ฐ ํํ ๋ฐฉ์์ ๋งํฉ๋๋ค.
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ด๋ ๋ณ์ ๋๋ ํจ์๋ฅผ ํฌํจํ ์ ์๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ธ๋ถ ์์กด์ฑ์ ๊ด๋ฆฌํด ์ฝ๋ ์์กด์ฑ ์ต์ํํด์ ์ ์ง๋ณด์์ฑ์ ํฅ์ ์ํจ๋ค.
์ผ๋ฐ์ ์ผ๋ก HTML,CSS,JavaScript๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์น ์ ํ๋ฆฌ์ผ์ด์ ๋๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: React, Vue.js)์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ, ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋๋ฐ ์ค์ํ ์ญํ์ ํ๋ค.
www.Replit.com
์ด ์ฌ์ดํธ๋ ์จ๋ผ์ธ ์ฝ๋ ์๋ํฐ ๋ฐ ์ปดํ์ผ๋ฌ๋ก, ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ฑฐ๋ ์๋ก์ด ๊ธฐ์ ์ ์๋ํ๊ณ ์ถ์ ์ฌ๋๋ค์๊ฒ ์ถ์ฒํด์ ๐

์ผ๋จ ๋จผ์ Create Repl ์ ํด๋ฆญํ๊ฒ ๋๋ฉด ์ด ์ฐฝ์ด ๋จ๋๋ฐ์. Template์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ธ์ด๋ฅผ ๊ฒ์ ํ

์ฒ์ ๊ณต๋ถํด๋ณด๋ ๊ฑฐ๋ผ ํ์ผ๋ช
์ react first day ์ค์ ํ์ต๋๋ค. ์ ์ด์ค ๋ค์ Create Repl ์์ฑํ๋ฉด ๋ฉ๋๋ค.

App.jsx๊ฐ ์ฌ๊ธฐ๊ฐ ์ด์ ์น ์ฌ์ดํธ์ ๋ณด์ผ ๋ด์ฉ์ธ๋ฐ์.
๐กjsx
JavaScript XML์ ์ฝ์๋ก React.js์์ ์ฌ์ฉ๋๋ JavaScript์ ํ์ฅ ๋ฌธ๋ฒ์ผ๋ก, JavaScript ์ฝ๋ ์์์ HTML์ ๊ฐ์ ๋งํฌ์ ์ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๊ณ React ์ปดํฌ๋ํธ์์ UI ๋ ๋๋งํ ๋ ๋งค์ฐ ํธ๋ฆฌํ๋ค.

์คํ ์์ผ๋ณด๋ฉด App.jsx์ ์๋ ๋ด์ฉ์ด ๋จ๋ ๊ฑธ ํ์ธ ํ ์ ์์ต๋๋ค.
์ด๋ฒ์๋ React๋ง ์ง์๋ณด๋ฉด

์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ ๊ฑธ ๋ณผ ์ ์์!
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค ๊ฐ์ ๊ฒฝ์ฐ ctrl + S๋ก ์ ์ฅ ํ๋์ง
ํญ์ ์ฒดํฌ ํด์ผ๋๊ณ F5๋ก ์๋ก ๊ณ ์นจ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํด์ค์ผ ๋๋๋ฐ..
์๋์ผ๋ก ์์์ ์
๋ฐ์ดํธ ๋๋ค ์ง์ง ํธํ๊ณ ์ข๋ค์.
์ด๋์ React ๋ง์ด ์ฐ๋๊ตฌ๋ ๋๊ผ์ด์.. ๐

๋ฆฌ์กํธ๋ ๋จ ํ๋์ HTML ํ์ด์ง๋ฅผ ์ฌ์ฉํด์ SPA ๊ฐ๋ฐ์ ํ๋์.
๐ก์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (Single Page Application, SPA)
- ์น ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์น ์ฌ์ดํธ์์ ํ๋์ ์น ํ์ด์ง๋ง์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ค์ํ ์ ๋ณด์ ์ํธ์์ฉ์ ์ ๊ณตํ๋ ์ ๊ทผ ๋ฐฉ์
- ๋ฒก์๋ ์๋ฒ์ ๋น๋๊ธฐ์ ์ผ๋ก ํต์ ํด์ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅ
์ฌ๊ธฐ์ body ์์ div์ ์๋ id=root ์ ๊ธฐ์ตํด๋๊ธฐ !

React์์๋ index.jsx ํ์ผ์ด ์ค์ํ๋ฐ
์ด index.jsx ํ์ผ์
index.html ๊ณผ App.jsx๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ํ์ผ
์์ ๋ด์ฉ์ ๋ณด๋ฉด doument.getElementByID('root'))
์๊น ๊ธฐ์ตํ๋ผ๋ id์ธ root๋ ์ด์ด์ฃผ๊ฒ ๋ค๋ ๋ป

import App from './App' ์

์ด App.jsx ํ์ผ์ ๊ฐ๋ฅดํค๋ ๊ฒ
์ด์ ๋ฐ์ค์ ์ ์ ๊ทธ๋ ค๋ณด๋ ค๊ณ ํจ

๊ธฐ์กด ์ฌ์ฉํ๋ ๋ฐฉ์์ <div class=""> ์ฃผ๋ฉด ๋์ง๋ง React๋ <div className="box">์ className์ ์ค์ผ ํ๋ค๊ณ ํ๋ค

์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ค์ ์ ์ด ์๊ธด ๊ฑธ ๋ณผ ์ ์์!
๋ฐ์ค 4๊ฐ๋ฅผ ๋ง๋ ๋ค๊ณ ํ์ ๋

์ด๋ ๊ฒ ๋ง๋ค๋ฉด ๋์ง๋ง ์ฝ๋ ๋ณด๋ฉด ๊ฐ์ ๋ด์ฉ์ด ์ค๋ณต ๋ผ์์ด ๋ณด๊ธฐ ์ข์ง ์์..
src ํด๋ ์์ Box.jsx ํ์ผ์ ๋ง๋ค์ด์ฃผ๊ณ
์ด ๋ Box.jsx๋ ์ปดํฌ๋ํธ

์์ชฝ์ import ํด์ค ๋ค์

function ํจ์ ์ฌ์ฉํด์ ์๊น ๋ง๋ return

Box ๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ export ๋ด๋ณด๋ด๊ธฐ ํ ์ค๋น๊ฐ ๋๋ค๋ ๋ป

๊ทธ๋ฐ ๋ค์ App.jsx ๋ก ๋์์์
Box๋ฅผ import ํด์ฃผ๊ณ main ์์ ์ผ๋ ๋ด์ฉ๋ค์ ๋ค ์ง์์ค๋ค

Box ํ๊ฐ๋ฅผ ๋ถ๋ฌ์ค๋ ค๊ณ ํ๋ฉด main ์์ Box๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ฐ..
๋ง์ฝ 2๊ฐ ๋ ๋ถ๋ฌ์ค๊ณ ์ถ๋ค ํ๋ฉด

์๊น๋ณด๋ค ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ ์ ์ง๋ณด์ ํ๊ธฐ์๋ ์ฉ์ดํด์ง ๊ฑธ ๋ณผ ์ ์๋ค
์ด์ Box ๊ฐ์ name์ ์ค์


๊ฐ๊ฐ ๋ค ๋ค๋ฅด๊ฒ name ์ค๋๋ก ์ถ๋ ฅ์ด ๋๊ฑธ ๋ณผ ์ ์๋ค
์ด๊ฑฐ๋ฅผ react ์์ props ๊ฐ๋
์ด๋ผ๊ณ
์ด๋ฒ์ num ์ ์ถ๊ฐํด์


์ฌ๊ธฐ์์ button ์ ์ถ๊ฐํ๊ณ ์ถ๋ค ํ๋ฉด
๊ธฐ์กด์๋ ํ๋ํ๋ ๋ค button์ ๋ฃ์ด์คฌ์ด์ผ ํ๋๋ฐ

React๋ ์ฝ๋๋ฅผ ์ฐพ์๋ค๋๋ฉด์ ๋ฒํผ์ ํ๋ํ๋ ์ถ๊ฐํ ํ์๊ฐ ์์ด์ง๊ฒ ๋ ๊ฒ!
๊ธฐ์กด ํ๋๋๋ก button์ onClick ์ด๋ฒคํธ ์ค์ alert ์ฐฝ ๋์ฐ๊ธฐ

์ด์ ๋ฒํผ ํด๋ฆญํ๋ฉด alert ์ฐฝ ๋์์ง ๊ฑธ ๋ณผ์์๊ฒ ๋๋๋ฐ ..

HTML ์ปดํฌ๋ํธ์ ๊ทธ์ ๊ด๋ จ๋ ํจ์๋ฅผ ๋ญ์ณ์ ์ธํธ๋ก ๋ง๋ค๊ณ ์ด๊ฑฐ๋ฅผ ์ปดํฌ๋ํธ๋ผ๊ณ ํ๋ค.
๋ฆฌ์กํธ๋ ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด์ ๊ฐ์ ธ๋ค ์จ์ ์ฝ๋์ ์ฌํ์ฉ์ฑ์ ๋์ด๋ ๊ฒ!