1 minute read


์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ

JavaScript ๋“ฑ์„ ์ฒ˜์Œ ์ ‘ํ•  ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‚จ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ๋ฐฐ์› ์ง€๋งŒ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ „์—ญ ์ƒํƒœ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ๊ผญ ์ „์—ญ ์ƒํƒœ์ผ ํ•„์š”๋Š” ์—†๋‹ค, ์ถœ์ฒ˜(source)๊ฐ€ ๋‹ฌ๋ผ๋„ ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด, ์ด ์ถœ์ฒ˜๋Š” ์˜ค์ง ํ•œ ๊ณณ์ด์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์ผ ์‚ฌ๋ณธ์ด ์žˆ์„ ๊ฒฝ์šฐ, ๋‘ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋กœ ๋™๊ธฐํ™”(sync) ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•œ๋ฐ, ์ด๋Š” ๋ฌธ์ œ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ธฐ์— ํ•œ ๊ณณ์—์„œ๋งŒ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ โ€˜ํ•˜๋‚˜์˜ ์ถœ์ฒ˜โ€™๋Š” ๋‹ค๋ฅธ ๋ง๋กœ ์ด์•ผ๊ธฐ ํ•˜๋ฉด โ€˜์ „์—ญ ๊ณต๊ฐ„โ€™์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•ด, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ๊ฐ™์€ ๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋„๋ก ํ•˜์ž. Single source of truth(์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ์ถœ์ฒ˜) ์›์น™์€ ํ”„๋ก ํŠธ์—”๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์–ธ๊ธ‰๋˜๋Š” ์›์น™์ด๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด ์ „์—ญ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ?

์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹คํฌ๋ชจ๋“œ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํŽ˜์ด์ง€, ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ๋‹คํฌ ๋ชจ๋“œ ํ˜น์€ ๋ผ์ดํŠธ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ์ด ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ…Œ๋งˆ ์„ค์ •์„ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ตญ์ œํ™”(Globalization) ์„ค์ •๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์šด์˜์ฒด์ œ๊ฐ€ ํŠน์ • ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ์•„๋‚ด์„œ, UI์— ํ•„์š”ํ•œ ํ…์ŠคํŠธ ๋ฆฌ์†Œ์Šค๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•œ ํ›„, ์ „์—ญ ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ์ž ์–ธ์–ด๋กœ ํ‘œํ˜„์ด ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.


Props Drilling

Props Drilling์€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ prop๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ์‚ฌ์ด๋Š” props๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๊ฑฐ์น˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ˜„์ƒ์„ ์˜๋ฏธํ•œ๋‹ค.

Props Drilling์˜ ๋ฌธ์ œ์ 

Props์˜ ์ „๋‹ฌ ํšŸ์ˆ˜๊ฐ€ 5ํšŒ ์ด๋‚ด๋กœ ๋งŽ์ง€ ์•Š๋‹ค๋ฉด Props Drilling์€ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด์„œ Props์˜ ์ „๋‹ฌ ๊ณผ์ •์ด ๋Š˜์–ด๋‚œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋งค์šฐ ๋‚˜๋น ์ง€๊ฒŒ ๋œ๋‹ค.
  • ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜ ๋˜ํ•œ ํž˜๋“ค์–ด์ง„๋‹ค.
  • state ๋ณ€๊ฒฝ์‹œ Props ์ „๋‹ฌ ๊ณผ์ •์—์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ด€์—ฌ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค ๋˜ํ•œ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์›น ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ณผ๋„ํ•œ Props Drilling์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ๊ด€๋ จ ์žˆ๋Š” state๋Š” ๋  ์ˆ˜ ์žˆ์œผ๋ฉด ๊ฐ€๊นŒ์ด ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ์—์„œ ์ง์ ‘ state๋ฅผ ๊บผ๋‚ด์“ธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Props Drilling์„ ๋ฐฉ์ง€ํ•˜๊ธฐ์— ๋งค์šฐ ํšจ๊ณผ์ ์ด๋‹ค. ๋‹ค์–‘ํ•œ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Redux, Context api, Mobx, Recoil ๋“ฑ)์ด ์กด์žฌํ•œ๋‹ค.


Redux

Leave a comment