Virtual DOM
๋ณต์กํ SPA(์ฑ๊ธ ํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์
) ์์๋ DOM ์กฐ์์ด ๋ง์ด ๋ฐ์ํ๋ค. ๊ทธ ๋ณํ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ง์ด ์ฐ์ฐ์ ํด์ผํ๋จ ์๋ฆฌ๊ณ , ์ ์ฒด์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๋นํจ์จ์ ์ผ๋ก ๋ง๋ ๋ค๋ ๋ป์ด๋ค.
์ด ์ด๋ถ๋ถ์์ Virtual DOM ์ด ๋น์ ๋ฐํ๋ค! ๋ง์ฝ์ ๋ทฐ์ ๋ณํ๊ฐ ์๋ค๋ฉด, ๊ทธ ๋ณํ๋ ์ค์ DOM ์ ์ ์ฉ๋๊ธฐ์ ์ ๊ฐ์์ DOM ์ ๋จผ์ ์ ์ฉ์ํค๊ณ ๊ทธ ์ต์ข
์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ค์ DOM ์ผ๋ก ์ ๋ฌํด์ค๋ค. ์ด๋ก์จ, ๋ธ๋ผ์ฐ์ ๋ด์์ ๋ฐ์ํ๋ ์ฐ์ฐ์ ์์ ์ค์ด๋ฉด์ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ ๊ฒ ์ด๋ค.
Virtual DOM ์ด ํด๊ฒฐ ํ๋ ค๊ณ ํ๋๊ฑด ๋ฌด์์ด๋? DOM fragment๋ฅผ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ ์๋์ผ๋ก ์์
ํ ํ์ ์์ด, ์๋ํํ๊ณ ์ถ์ํํ๋๊ฒ์ด๋ค. ๊ทธ ๋ฟ๋ง ์๋๋ผ, ๋ง์ฝ์ ์์
์ ์ง์ ํ๋ค๋ฉด, ๊ธฐ์กด ๊ฐ ์ค ์ด๋ค๊ฒ ๋ฐ๋์๊ณ ์ด๋ค๊ฒ ๋ฐ๋์ง ์์๋์ง ๊ณ์ ํ์
ํ๊ณ ์์ด์ผํ๋๋ฐ (๊ทธ๋ ์ง ์์ผ๋ฉด ์์ ํ ํ์๊ฐ ์๋ DOM ํธ๋ฆฌ๋ ์
๋ฐ์ดํธ๋ฅผ ํ๊ฒ ๋ ์๋ ์์ผ๋๊น), ์ด๊ฒ๋ Virtual DOM ์ด ์ด๊ฑธ ์๋์ผ๋ก ํด์ค๋ค. ์ด๋ค๊ฒ ๋ฐ๋์๋์ง , ์ด๋ค๊ฒ ๋ฐ๋์ง ์์๋์ง ์์๋ด์ค๋ค.
๋ง์ง๋ง์ผ๋ก, DOM ๊ด๋ฆฌ๋ฅผ Virtual DOM ์ด ํ๋๋ก ํจ์ผ๋ก์จ, ์ปดํฌ๋ํธ๊ฐ DOM ์กฐ์ ์์ฒญ์ ํ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ ์ํธ์์ฉ์ ํ์ง ์์๋ ๋๊ณ , ํน์ DOM ์ ์กฐ์ํ ๊ฒ ์ด๋ผ๋์ง, ์ด๋ฏธ ์กฐ์ํ๋ค๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ๊ณต์ ํ ํ์๊ฐ ์๋ค. ์ฆ, ๊ฐ ๋ณํ๋ค์ ๋๊ธฐํ ์์
์ ๊ฑฐ์น์ง ์์ผ๋ฉด์๋ ๋ชจ๋ ์์
์ ํ๋๋ก ๋ฌถ์ด์ค ์ ์๋ค๋ ๋ป์ด๋ค.
'๐ Front > โ๏ธ React JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| React-19 useActionState ์ดํด๋ณด๊ธฐ (0) | 2024.05.26 |
|---|---|
| [React] ๊น๋นก์ ํ์ ํด๊ฒฐ (useLayoutEffect, APIํธ์ถ) (0) | 2022.03.30 |
| React [๋ฆฌ๋ ๋๋ง ๊ณผ์ ] (0) | 2021.09.08 |
| [JSX]: JS์ JSX ํ์ฅ์๋ ๋ฌด์์ด ๋ค๋ฅผ๊น? (0) | 2021.09.07 |
| [styled-components] ํ์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๊ธฐ (0) | 2021.09.02 |