๋ฆฌ์กํธ์ ๋ ๋๋ง์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋ง์ ํ์ํ DOM ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
์ด ๋ ๋๋ง ๊ณผ์ ์ ์๊ฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์๋นํด ์ํ๋๋ ๊ณผ์ ์ผ๋ก, ์ด ๋น์ฉ์ ์ฌ์ฉ์์๊ฒ ์ฒญ๊ตฌ๋๋ฉฐ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ ๋ณต์กํด์ง์๋ก ์ ์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํดํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ ๋๋ง ๊ณผ์ ์ ์ต์ํ์ผ๋ก ์ค์ฌ์ผ ํ๋ค.
2.4.1 ๋ฆฌ์กํธ์ ๋ ๋๋ง์ด๋?
๋ฆฌ์กํธ์์์ ๋ ๋๋ง์ด๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ํธ๋ฆฌ ์์ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด ํ์ฌ ์์ ๋ค์ด ๊ฐ์ง๊ณ ์๋ props์ state์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ป๊ฒ UI๋ฅผ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ค DOM ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ๊ณตํ ๊ฒ์ธ์ง ๊ณ์ฐํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ฏธํ๋ค.
2.4.2 ๋ฆฌ์กํธ์ ๋ ๋๋ง์ด ์ผ์ด๋๋ ์ด์
1.์ต์ด ๋ ๋๋ง : ์ฒ์ ์ง์ ํ๋ฉด ๋ ๋๋งํด์ผ ํ ๊ฒฐ๊ณผ๋ฌผ์ด ํ์ํ๋ค. ๋ฆฌ์กํธ๋ ๋ธ๋ผ์ฐ์ ์ ์ด ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ต์ด ๋ ๋๋ง์ ์ํํ๋ค.
2.๋ฆฌ๋ ๋๋ง : ์ต์ด ๋ ๋๋ง์ด ๋ฐ์ํ ์ดํ๋ก ๋ฐ์ํ๋ ๋ชจ๋ ๋ ๋๋ง์ ์๋ฏธํ๋ค.
(state๊ฐ setter()๋ฅผ ํตํด ๋ณ๊ฒฝ, props๊ฐ ๋ณ๊ฒฝ, key๊ฐ ๋ณ๊ฒฝ, ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๊ฒฝ์ฐ..)
๊ทผ๋ฐ, useState ๋ฑ์ผ๋ก ๊ด๋ฆฌ๋์ง ์๋ ๋จ์ํ ๋ณ์๋ ์ ์๋ฌด๋ฆฌ ๋ณ๊ฒฝ๋๋ค ํ๋๋ผ๋ ๋ฆฌ๋ ๋๋ง์ ๋ฐ์์ํค์ง ์์ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ ๋๋ง๋ DOM์์ ํ์ธํ ์ ์๋ค.
2.4.3 ๋ฆฌ์กํธ์ ๋ ๋๋ง ํ๋ก์ธ์ค
๋ ๋๋ง ํ๋ก์ธ์ค๊ฐ ์์๋๋ฉด ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ์ ๋ฃจํธ์์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ๋ค๊ณ ์ง์ ๋ผ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ๋๋ค.
ํจ์ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ์๋ FunctionComponent() ๊ทธ ์์ฒด๋ฅผ ํธ์ถํ ๋ค์, ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ฅํ๋ค.
๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ JSX ๋ฌธ๋ฒ์ผ๋ก ๊ตฌ์ฑ๋ผ ์๊ณ , ์ด๊ฒ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ๋๋ฉด์ React.createElement()๋ฅผ ํธ์ถํ๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ณํ๋๋ค.
๊ทธ๋์ ๋ธ๋ผ์ฐ์ ์ UI ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ ์ ์๋ ์ผ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.(์ด๊ฒ ๋ชจ์ฌ์ ํธ๋ฆฌ๊ฐ ๋๊ณ ๊ฐ์ DOM์ด ๋๋๋ฏ?)
์ด๋ฐ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์์งํ ๋ค์, ๋ฆฌ์กํธ์ ์๋ก์ด ํธ๋ฆฌ์ธ ๊ฐ์ DOM๊ณผ ๋น๊ต(๋๊ฐ์ ๊ฐ์DOM๋ผ๋ฆฌ ๋น๊ตํ๋ ๊ฒ)ํด ์ค์ DOM์ ๋ฐ์ํ๊ธฐ ์ํ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ฐจ๋ก์ฐจ๋ก ์์งํ๋ค.
์ด๋ ๊ฒ ๊ณ์ฐํ๋ ๊ณผ์ ์ ๋ฆฌ์กํธ์ ์ฌ์กฐ์ ์ด๋ผ๊ณ ํ๋ค.
์ด๋ฌํ ์ฌ์กฐ์ ๊ณผ์ ์ด ๋ชจ๋ ๋๋๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋์ ๋๊ธฐ ์ํ์ค๋ก DOM์ ์ ์ฉํด ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ณด์ด๊ฒ ๋๋ค.
2.4.4 ๋ ๋์ ์ปค๋ฐ
๋ฆฌ์กํธ์ ๋ ๋๋ง์ ๋ ๋ ๋จ๊ณ์ ์ปค๋ฐ ๋จ๊ณ๋ผ๋ ์ด ๋ ๋จ๊ณ๋ก ๋ถ๋ฆฌ๋์ด ์คํ๋๋ค.
1.๋ ๋ ๋จ๊ณ
์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ์ฐํ๋ ๋ชจ๋ ์์
์ ๋งํ๋ค.(์ฌ์กฐ์ ๋จ๊ณ๊น์ง๊ฒ ์ง?)
์ฌ๊ธฐ์ ๋น๊ตํ๋ ๊ฒ์ ํฌ๊ฒ type,props,key๋ค. ์ด ์ธ ๊ฐ์ง ์ค ํ๋๋ผ๋ ๋ณ๊ฒฝ๋ ๊ฒ์ด ์์ผ๋ฉด ๋ณ๊ฒฝ์ด ํ์ํ ์ปดํฌ๋ํธ๋ก ์ฒดํฌํด ๋๋ค.
2.์ปค๋ฐ ๋จ๊ณ
๋ ๋ ๋จ๊ณ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์ DOM์ ์ ์ฉํด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ ๋งํ๋ค. (์ด ๋จ๊ณ๊ฐ ๋๋์ผ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง์ด ๋ฐ์ํ๋ค.)
*๊ทธ๋ผ ๋ฆฌ์กํธ๋ DOM ๋ง๋ค๊ณ ๋ธ๋ผ์ฐ์ ๋ DOM ๋ง๋๋๊ฑฐ์ผ?
- ๋ฆฌ์กํธ๋ Virtual DOM์ ๋ง๋ค์ด์ ์ค์ DOM ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌ
- ๋ธ๋ผ์ฐ์ ๋ ์ ๋ฐ์ดํธ๋ ์ค์ DOM์ ๋ฐ์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์์ ์ ์ํ
๋ฆฌ์กํธ์ ๋ ๋๋ง์ด ์ผ์ด๋๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด DOM ์ ๋ฐ์ดํธ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋๋ค.
์ฆ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ์ฐํ๋๋ฐ ์๋ฌด๋ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฐ์ง๋์ง ์๋๋ค๋ฉด ์ด ์ปค๋ฐ ๋จ๊ณ๋ ์๋ต๋ ์ ์๋ค.
๋ฆฌ์กํธ์ ๋ ๋๋ง์ ๊ผญ ๊ฐ์์ ์ธ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์์๋ ๋ฐ์ํ ์ ์๋ค.
์ด ๋๊ฐ์ง ๊ณผ์ ์ผ๋ก ์ด๋ค์ง ๋ฆฌ์กํธ์ ๋ ๋๋ง์ ํญ์ ๋๊ธฐ์์ผ๋ก ์๋ํ๋ค.
(๋ง์ฝ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด๋ค์ง ๊ฒฝ์ฐ, ์ฌ์ฉ์๋ ํ๋์ ์ํ์ ๋ํด ์ฌ๋ฌ ๊ฐ์ง ๋ค๋ฅธ UI๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ค.)
๊ทผ๋ฐ B์ ์ปดํฌ๋ํธ ๋ ๋๋ง ์์ ์ด ๋ฌด๊ฑฐ์ ์๋์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ ๋๋งํ ์ ์๋ C๋ผ๋ ๋ณ๊ฒฝํด์ ๋ณด์ฌ์ค ์ ์๋ค๋ฉด?
๊ทธ๋์ ๋น๋๊ธฐ ๋ ๋๋ง, ์ด๋ฅธ๋ฐ ๋์์ฑ ๋ ๋๋ง์ด ๋ฆฌ์กํธ 18์์ ๋์ ๋๋ค.
'๐Book' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ชจ๋ ๋ฆฌ์กํธ Deep Dive] 03์ฅ ๋ฆฌ์กํธ ํ ๊น๊ฒ ์ดํด๋ณด๊ธฐ (0) | 2025.01.18 |
---|---|
[๋ชจ๋ ๋ฆฌ์กํธ Deep Dive] 05์ฅ ๋ฆฌ์กํธ์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2024.07.02 |