๐ ์์ํ์ธ์! React ํ๋ก๊ทธ๋๋ฐ ์๋ฒฝ ๊ฐ์ด๋ (์ ๋ฌธ์ ํ์!)
A. React๋ ๋ฌด์์ผ๊น์?
React๋ Facebook์์ ๊ฐ๋ฐํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋น ๋ฅธ ๋ ๋๋ง ์๋์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก ์น ๊ฐ๋ฐ์ ํจ์จ์ฑ์ ํฌ๊ฒ ๋์์ต๋๋ค. ๋จ์ผ ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ DOM์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ๋ณต์กํ UI๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
B. React ์์ํ๊ธฐ: ๊ฐ๋ฐ ํ๊ฒฝ ์ค์
React ๊ฐ๋ฐ์ ์์ํ๋ ค๋ฉด Node.js์ npm(๋๋ yarn)์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. Create React App์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ ์ ์์ต๋๋ค. ์์ธํ ์ค์น ๋ฐ ์ค์ ๋ฐฉ๋ฒ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
npx create-react-app my-react-app
C. JSX: React์ ๋ฌธ๋ฒ ์ดํดํ๊ธฐ
JSX๋ JavaScript XML์ ์ฝ์๋ก, React์์ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ ๋๋ค. HTML๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ผ๋ก React ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. JSX๋ฅผ ์ฌ์ฉํ๋ฉด UI๋ฅผ ๋์ฑ ์ง๊ด์ ์ผ๋ก ํํํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
<div>
<h1>Hello, world!</h1>
</div>
D. Component: React์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
React์์ UI๋ ์ฌ๋ฌ ๊ฐ์ ์์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ์ ํ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
E. State์ Props: ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ํต์ฌ
State๋ ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, Props๋ ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. State์ Props๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ React ๊ฐ๋ฐ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
F. Hooks: React์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ํ์ฉํ๊ธฐ
Hooks๋ ํจ์ํ ์ปดํฌ๋ํธ์์ state, lifecycle ๋ฉ์๋ ๋ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. useState, useEffect ๋ฑ ๋ค์ํ Hooks๋ฅผ ํ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
G. ์ค์ ์์ : ๊ฐ๋จํ Todo List ๋ง๋ค๊ธฐ
๊ฐ๋จํ Todo List๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ React์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ค์ตํด๋ด ์๋ค. useState Hook์ ํ์ฉํ์ฌ Todo ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ณ , JSX๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ๊ตฌ์ฑํด๋ด ๋๋ค.
(์ฌ๊ธฐ์ Todo List ์์ ์ฝ๋ ์ฝ์ )
H. ๋ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด?
React ๊ณต์ ๋ฌธ์์ ๋ค์ํ ์จ๋ผ์ธ ๊ฐ์ข๋ฅผ ํตํด ๋ ์์ธํ ๋ด์ฉ์ ํ์ตํ ์ ์์ต๋๋ค. React ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ฌ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๊ต๋ฅํ๋ฉฐ ์ค๋ ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
“`
..