๐ญ ์๋ก
ํ๋ก ํธ์๋๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ํ ๋ฒ์ฏค์ ์ด๋ฐ ๋ฌธ์ฅ์ ๋ณด๊ฒ ๋๋ค.
“๋ฆฌ์กํธ๋ ๊ฐ์ DOM(Virtual DOM)์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.”
๊ทธ๋ฐ๋ฐ ์ฒ์ ๋ณด๋ฉด ์ด๊ฒ ๋ฌด์จ ๋ง์ธ์ง ๊ฝค ์ถ์์ ์ผ๋ก ๋๊ปด์ง๋ค.
์ด ๋ฌธ์ฅ์ด ์ค์ ๋ก ๋ฌด์์ ์๋ฏธํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ ์ฑ๋ฅ์ด ์ข์์ง๋์ง ์ ๋ฆฌํด๋ณด์๋ค.
1. DOM์ด๋ ๋ฌด์์ธ๊ฐ?
๋จผ์ DOM(Document Object Model)๋ถํฐ ์ดํดํด์ผ ํ๋ค.
์นํ์ด์ง๋ ๋ด๋ถ์ ์ผ๋ก DOM ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋๋ฐ, ์ฝ๊ฒ ๋งํ๋ฉด
๋ธ๋ผ์ฐ์ ๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ HTML์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ
ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ฐ์ฒด ํํ(DOM)๋ก ๋ณํํด์ ๊ด๋ฆฌํ๋ค.
์๋ฅผ ๋ค์ด
<body>
<h1>์ ๋ชฉ</h1>
<p>๋ด์ฉ</p>
</body>
์ด ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋ค.
- body
- h1
- p
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ DOM์ด๋ผ๊ณ ํ๋ค.
2. ๋ฌธ์ : DOM์ ์ง์ ์์ ํ๋ฉด ๋๋ฆฌ๋ค
์น์์ ๋ฒํผ ํด๋ฆญ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ, ์ ๋ ฅ๊ฐ ๋ณ๊ฒฝ ๋ฑ์ผ๋ก ์ํ๊ฐ ๋ฐ๋๋ฉด ํ๋ฉด๋ ๋ฐ๋์ด์ผ ํ๋ค.
์ด๋ ๊ฐ์ฅ ์ง๊ด์ ์ธ ๋ฐฉ์์ DOM์ ์ง์ ์์ ํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฌธ์ ๋
- DOM ์์ ์ ๋น์ฉ์ด ํฌ๊ณ
- ํ๋ฉด์ ๋ค์ ๊ณ์ฐํด์ผ ํ๊ณ (reflow)
- ๋ค์ ๊ทธ๋ ค์ผ ํ๋ค (repaint)
์ฆ, DOM์ ์์ฃผ ๊ฑด๋๋ฆด์๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค.
3. ํด๊ฒฐ ๋ฐฉ๋ฒ: ๊ฐ์ DOM (Virtual DOM)
๋ฆฌ์กํธ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ DOM(Virtual DOM)์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค.
๊ฐ์ DOM์ด๋ ์ค์ DOM์ ํ๋ด ๋ธ “์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด” ๋ฅผ ๋งํ๋ค.
์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฉด ๋ฆฌ์กํธ๋ ์ด๊ธฐ UI๋ฅผ ์์ฑํ๋ค.
์ค์ DOM์ ๋ง๋๋ ๋์ ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ๋ง๋๋๋ฐ,
๊ฐ์ DOM์ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ฉฐ ์ค์ ํ๋ฉด์ ํ์๋์ง ์๋๋ค.
์ฆ, ๋ฆฌ์กํธ๋ ๋ธ๋ผ์ฐ์ ์ DOM์ ์ง์ ๊ฑด๋๋ฆฌ์ง ์๊ณ
๋ฉ๋ชจ๋ฆฌ ์์์ ๊ฐ์ง DOM์ ํ๋ ๋ ๋ง๋ค์ด์ ์์
ํ๋ค.
4. ๋ฆฌ์กํธ์ ๋์ ๋ฐฉ์ ๐ก
๊ธฐ์กด ๋ฐฉ์์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค DOM์ ์ง์ ์์ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๊ณ ๋๋ฆฌ๋ค.
ํ์ง๋ง ๋ฆฌ์กํธ ๋ฐฉ์์
โ
์ฌ์ฉ์๊ฐ ์ด๋ค ์ํ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐ(์: ๋ฒํผ ํด๋ฆญ)ํ๋ฉด,
๋ฆฌ์กํธ๋ ํด๋น ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ์๋ก์ด ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
์ด ํธ๋ฆฌ์๋ ๋ณ๊ฒฝ๋ ์ํ๋ฅผ ๋ฐ์ํ UI ์์๊ฐ ํฌํจ๋๋ค.
โก
์ด์ ๋ฆฌ์กํธ๋ ์ด์ ๊ฐ์ DOM ํธ๋ฆฌ์ ์๋ก์ด ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ๋น๊ตํ๋ค.
(์ด ๊ณผ์ ์ "์ฌ์กฐ์ " ๋๋ "๋ฆฐ๋๋ง"์ด๋ผ๊ณ ํ๋ค.)
๋ฆฌ์กํธ๋ ๋ ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ๋น๊ตํ๋ฉด์ ์ด๋ค ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋์๋์ง๋ฅผ ํจ์จ์ ์ผ๋ก ์ฐพ๋๋ค.
โข
๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์ฐพ์๋ด๋ฉด, ๋ฆฌ์กํธ๋ ์ด ๋ถ๋ถ๋ง์ ์ค์ DOM์ ๋ฐ์ํ๋ค.
์ด์ ๊ณผ ์๋ก์ด ๊ฐ์ DOM ์ฌ์ด์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์กฐ์ํ๋ฏ๋ก
์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์๊ณ ๋ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
์ ๋ฆฌํ์๋ฉด
- ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋จ
- ์๋ก์ด ๊ฐ์ DOM ์์ฑ
- ์ด์ ๊ฐ์ DOM๊ณผ ๋น๊ต
- ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ๋ฐ์
์์ ๊ฐ์ ํ๋ฆ์ผ๋ก ๋์ํ๋ค.
์ด๊ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์ DOM ์กฐ์์ ๋นํด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด๋ค.
5. ๊ฐ์ DOM์ด ์ฑ๋ฅ์ด ์ข์์ง๋ ์ด์
๊ธฐ์กด ๋ฐฉ์์ ์ง์ ๊ณ ์น ๋ ์ ์ฒด๋ฅผ ๋ค ๋ถ์๊ณ ๋ค์ ์ง๋ ๋๋์ด๋ผ๋ฉด
๋ฆฌ์กํธ๋ ๊ณ ์ฅ๋ ๋ถ๋ถ๋ง ์ฐพ์์ ๊ณ ์น๋ ๋๋์ผ๋ก ๋น์ ํ ์ ์๋ค.
๊ฐ์ DOM์ด ์ฑ๋ฅ์ด ์ข์์ง๋ ์ด์ ์ ํต์ฌ์ ๋ฑ ํ๋๋ค.
์ค์ DOM ์ ๊ทผ์ ์ต์ํํ๊ธฐ ๋๋ฌธ
๋ฆฌ์กํธ๋ Virtual DOM์ ์ด์ฉํด ๋ณ๊ฒฝ ์ฌํญ์ ๋น๊ตํ ๋ค,
ํ๋ฉด์ ํต์งธ๋ก ๋ค์ ๊ทธ๋ฆฌ์ง ์๊ณ , ๋ฐ๋ ๋ถ๋ถ๋ง ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํด์ ๋น ๋ฅด๊ฒ ๋ง๋ ๋ค.
(ํ์ํ ๋ถ๋ถ๋ง ์ค์ DOM์ ๋ฐ์ํจ์ผ๋ก์จ ์ฑ๋ฅ์ ์ต์ ํํ๋ค.)
์ ๋ฆฌ
์ด๋ฌํ ๊ณผ์ ์ ํตํด ๋ฆฌ์กํธ๋ ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ๋ค.
์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์๊ณ ๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์ ๋ฐ์ดํธํ๋ฏ๋ก
์ฌ์ฉ์์๊ฒ ๋น ๋ฅธ ์๋ต์ฑ์ ์ ๊ณตํ๋ฉด์๋ ๋ถํ์ํ ๊ณ์ฐ๊ณผ DOM ์กฐ์์ ์ต์ํํ๋ค.
๊ฐ์ DOM์ ๋จ์ํ ๊ฐ๋ ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ฆฌ์กํธ์ ์ ์ฒด๋ฅผ ์ดํดํ๋ ํต์ฌ์ด๋ผ๊ณ ๋ณผ ์ ์๋ ๊ฒ ๊ฐ๋ค.

'FE > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Zustand vs TanStack Query, ๊ฐ์ด ์ฐ์! (0) | 2026.03.15 |
|---|---|
| ๊ธฐ์กด Vite + React ํ๋ก์ ํธ์ TypeScript ์ถ๊ฐํ๊ธฐ (๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฆฌ) (0) | 2026.03.12 |
| ํด๋ฆญ ์ด๋ฒคํธ๋ก ์์๋ณด๋ React vs ๋ฐ๋๋ผ JavaScript ํต์ฌ ์ฐจ์ด (1) | 2023.05.09 |
| ๋ฆฌ์กํธ ์ฐ๋จน 3 - Component ์ปดํฌ๋ํธ (1) | 2023.04.21 |
| ๋ฆฌ์กํธ ์ฐ๋จน 2 (1) | 2023.04.14 |
๋๊ธ