
๐ผ๏ธ ๋ ๋๋ง์ด๋
ํ๋ก ํธ์๋๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๋ค ๋ณด๋ฉด,
"React๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ค", "ํ๋ฉด์ด ๋ค์ ๋ ๋๋ง๋๋ค" ๊ฐ์ด ๋ ๋๋ง์ด๋ผ๋ ๋จ์ด๋ฅผ ์์ฃผ ๋ฃ๊ฒ ๋๋ค.
์ฌ๊ธฐ์์ ๋งํ๋ ๋ ๋๋ง(Rendering)์ด๋,
์ฝ๋(HTML,CSS, JS)๋ฅผ ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ์ค์ ํ๋ฉด(UI)์ผ๋ก ๋ฐ๊ฟ ๊ทธ๋ ค์ฃผ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
๐งฑ ๋น์
๋ ๋๋ง์ ์ฝ๊ฒ ์ดํดํ๋ ค๋ฉด, ์ง ์ง๊ธฐ์ ๋น์ ํด๋ณผ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๊ทธ๊ฑด ์ค๊ณ๋๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ค์์ผ๋ก, ๋ธ๋ผ์ฐ์ ๋ ์ด ์ค๊ณ๋๋ฅผ ๋ณด๊ณ ์ค์ ๋ก ํ๋ฉด์ ๋ง๋ค์ด ๋ณด์ฌ์ฃผ๋ ๊ฑด์ถ๊ฐ์ด๋ค.
๋ง์ง๋ง์ผ๋ก, ๊ฑด์ถ๊ฐ๊ฐ ์ค๊ณ๋๋ฅผ ๋ณด๊ณ ๋ฒฝ๋์ ์์์ ์ค์ ์ง์ ๋ง๋๋ ๊ณผ์ ์ ๋ฐ๋ก ๋ ๋๋ง์ด๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค.
๐ก ๋ ๋๋ง ๊ณผ์
ํ๋ก ํธ์๋์์์ ๋ ๋๋ง์ ์๋์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ผ์ด๋๋ค.
1๏ธโฃ ๋ธ๋ผ์ฐ์ ๊ฐ index.html์ ์ฝ๋๋ค.
2๏ธโฃ ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋ CSS, JS ํ์ผ์ ๋ถ๋ฌ์จ๋ค.
3๏ธโฃ JS ์์ ์๋ React ์ฝ๋๊ฐ ์คํ๋์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ ๋ค.
4๏ธโฃ ์ด ์ปดํฌ๋ํธ๋ค์ ๋ธ๋ผ์ฐ์ ์ <div id="root"> ์์ ๋ฃ์ด์ ํ๋ฉด์ ๊ทธ๋ฆฐ๋ค.
5๏ธโฃ ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด(UI)์ด ์ต์ข ์ ์ผ๋ก ๊ทธ๋ ค์ง๋ค.
์ด์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ UI๊ฐ ์ค์ ํ๋ฉด์ ๋ ๋๋ง๋๋ ๊ฒ์ด๋ค.
๐ ๋ฆฌ๋ ๋๋ง์ด๋
์์์ ์ดํด ๋ดค๋ฏ์ด ๋ ๋๋ง์ "์ฝ๋๋ฅผ ํ๋ฉด์ผ๋ก ๋ฐ๊พธ๋ ๊ณผ์ "์ธ๋ฐ,
์ด๊ฒ ํ ๋ฒ ์ผ์ด๋๊ณ ๋๋๋ ๊ฒ ์๋๋ผ, ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์ค์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋ ์๋ ์๋ค.
์ด๊ฑฐ๋ฅผ ๋ฐ๋ก ๋ฆฌ๋ ๋๋ง(Re-rendering)์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด๋ค.
์ฆ, ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์
๋ฆฌ๋ ๋๋ง์ด ํ๋ฉด์ ์ ๋ถ ๋ค ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ,
๋ณํ๋ ๋ถ๋ถ๋ง ๊ฐ์งํด์ ํ์ํ ์์ญ๋ง ๋ค์ ๊ทธ๋ฆฐ๋ค๋ ์ ์ด๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ํด๋ณด์.
const [count, setCount] = useState(0);
<button onClick={() => setCount(count + 1)}>์ฆ๊ฐ</button>
์ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ๋์ํ๋ค.
1๏ธโฃ ์ํ ์ด๊ธฐํ
usertate(0)์ผ๋ก ์ธํด ์ฒ์์ count = 0์ธ ์ํ๋ก ํ๋ฉด์ด ๋ ๋๋ง ๋๋ค.
์ด๋ ๋ฒํผ์๋ onClick ์ด๋ฒคํธ๊ฐ ๊ฑธ๋ ค ์๊ฒ ๋๋ค.
2๏ธโฃ ์ฌ์ฉ์ ์ํธ์์ฉ
์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด setCount(count + 1)์ด ์คํ๋๋ค.
์ฆ, ์ํ ๊ฐ์ด 0์์ 1๋ก ๋ฐ๋๊ฒ ๋๋ค.
3๏ธโฃ React๊ฐ ๋ณํ ๊ฐ์ง
React๋ ๋ด๋ถ์ ์ผ๋ก ์ํ(State)๋ฅผ ๊ธฐ์ตํ๊ณ ์๊ธฐ ๋๋ฌธ์
setCount ๊ฐ์ setter ํจ์๊ฐ ํธ์ถ๋๋ฉด, React๋ ์ปดํฌ๋ํธ ์์ ์๋ ์ํ๊ฐ ๋ฐ๋์์์ ์ธ์งํ๊ฒ ๋๋ค.
4๏ธโฃ ๋ฆฌ๋ ๋๋ง ์ค๋น
React๋ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๋ค๊ณ ํด์ ๊ณง๋ฐ๋ก ์ ์ฒด DOM์ ๊ณ ์ณ๋ฒ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ
Virtual DOM์ด๋ผ๋ ๊ฐ์ ํธ๋ฆฌ๋ฅผ ์๋ก ๋ง๋ค๊ณ , ์ด์ ์ํ์ Virtual DOM๊ณผ ๋น๊ตํ๋ค.
5๏ธโฃ ์ฐจ์ด ๊ณ์ฐ
count ๊ฐ์ด 0์์ 1๋ก ๋ฌ๋ผ์ก์ผ๋ ์ด ์ซ์๋ฅผ ํ์ํ๋ ๋ถ๋ถ๋ง ๋ณ๊ฒฝ์ด ํ์ํ ํ ๋ฐ,
React๊ฐ ์ด๋ค ๋ถ๋ถ๋ง ๊ณ ์น๋ฉด ๋๋์ง๋ฅผ ์์์ ๊ณ์ฐํ๋ค.
6๏ธโฃ ํ๋ฉด ์ ๋ฐ์ดํธ
์ด์ ์ค์ ๋ธ๋ผ์ฐ์ DOM์์๋ ์ซ์ 0์ ์ง์ฐ๊ณ 1์ ๊ทธ๋ ค ๋ฃ๊ฒ ๋๋ค.
(๋ฌผ๋ก ์ด๋ ๋๋จธ์ง ๋ฒํผ ๋ชจ์์ด๋ ๋ค๋ฅธ UI๋ ๊ฑด๋๋ฆฌ์ง ์๋๋ค.)
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Frontend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Frontend] ํจํค์ง ๋งค๋์ ์ ๋์ ๊ณผ์ (2) | 2025.06.04 |
|---|---|
| [Frontend] ํจํค์ง ๋งค๋์ (1) | 2025.06.03 |
| [Frontend] ๋ ๋๋ง์ 3๊ฐ์ง ๋ฐฉ์: CSR, SSR, SSG (2) | 2025.06.01 |
| [Frontend] React๋ (1) | 2025.05.27 |
| [Frontend] React Router๋ก SPA์์ ํ์ด์ง ์ด๋ ๊ตฌํํ๊ธฐ (1) | 2025.05.27 |