๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ““Book

[๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive] 2.4 ๋ Œ๋”๋ง์€ ์–ด๋–ป๊ฒŒ ์ผ์–ด๋‚˜๋Š”๊ฐ€?

by s2ylvia 2025. 1. 17.

 

๋ฆฌ์•กํŠธ์˜ ๋ Œ๋”๋ง์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ 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์—์„œ ๋„์ž…๋๋‹ค.