ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

โœ๏ธ์ƒํƒœ๊ด€๋ฆฌ ์™œ ํ•˜๋Š”์ง€?, state ๊ด€๋ฆฌ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€?

๋„ค์ด๋ฒ„ ๋‹จ์–ด ๋ฒˆ์—ญ

 

์ƒํƒœ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™”๋ฉด์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ์ฆ‰ "๋ณ€ํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ"

 

 

์ƒํƒœ์˜ ์ข…๋ฅ˜ 

์ƒํƒœ๋Š” ํฌ๊ฒŒ ๋ฒ”์œ„์˜ ๊ฐœ๋…์—์„œ ์ „์—ญ์ƒํƒœ(Global State)์™€ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ(Cross Component State), ๊ทธ๋ฆฌ๊ณ  ์ง€์—ญ์ƒํƒœ(Local State), ์„ธ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

  • ์ง€์—ญ์ƒํƒœ : ํŠน์ • ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์ƒํƒœ๋ฅผ ๋œปํ•œ๋‹ค. ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋˜์ง€ ์•Š๋Š”๋‹ค ex) input, selectbox

 

  • ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์ƒํƒœ๋ฅผ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋ชจ๋‹ฌ๋กœ ๋ณดํ†ต ์‚ฌ์šฐ์ด ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ prop์„ ๋„˜๊ฒจ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ „๋‹ฌ ๋˜๋„๋ก ํ•˜๋Š” Prop Drilling ๋ฐฉ์‹์ด ํ•„์š”ํ•˜๋‹ค.

*Prop Drilling : ์˜ค์ง ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฑฐ์น˜๋ฉฐ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •

 

  • ์ „์—ญ์ƒํƒœ : ํ”„๋กœ์ ํŠธ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์ƒํƒœ, ์˜ˆ๋ฅผ๋“ค๋ฉด ์œ ์ €๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์ด ๋˜ํ•œ Prop Drilling ๋ฐฉ์‹์„ ํ™œ์šฉํ•œ๋‹ค.


์ƒํƒœ๊ด€๋ฆฌ๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€ ?

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ• ๋•Œ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณด๋‚ด๊ณ , ๋‹ค์‹œ ๊ทธ ๋ฐ์ดํ„ฐ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•ด์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ Prop Drilling์ด ๋งŽ์•„์ง€๋ฉด ์ด prop์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์ถ”์ฒ™ํ•˜๊ธฐ ์–ด๋ ค์›Œ ์ง„๋‹ค๋Š” ์ ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ ํˆด์„ ์„ ํƒํ•ด ์ƒํƒœ๋ฅผ ์ž˜ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

 

*์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํˆด : Context API, Redux(toolkit), React Query

 

์ข‹์€ ์ƒํƒœ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

  1. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์ง€์—ญ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
    • ์ง€์—ญ์ƒํƒœ๋กœ๋Š” State๋Š” ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณ  ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์ด ๋ฐฐ์น˜ ๋˜๋Š”๊ฒŒ ์ข‹๋‹ค. ๋งŒ์•ฝ ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ์™€ ๋ฉ€์–ด์ง„๋‹ค๋ฉด ๊ด€๋ จ ์—†๋Š” ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋”๊นŒ์ง€ ์ผ์œผํ‚ฌ ์œ„ํ—˜์ด ์žˆ๋‹ค.
  2. ์ง€์—ญ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ ์‹œ ๋‹ค์ˆ˜์˜ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์ƒํƒœ ์˜์กด์„ฑ์ด ๋†’์•„์ง„๋‹ค๋ฉด ์ „์—ญ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
  3. ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ(DB)์™€, UI ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹ค๋ฃฌ๋‹ค. 
  4. ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์บ์‹ฑ ์‹œ ์ „์—ญ ์ƒํƒœ๋กœ ๋‹ค๋ฃจ๋ฉด ์•ˆ๋œ๋‹ค. ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด, SWR์ด๋‚˜ React-Query ์™€ ๊ฐ™์€ ์„œ๋ฒ„ ์บ์‹ฑ ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

๐ŸŽฏ์ถœ์ฒ˜

 

https://mingule.tistory.com/74

 

React์—์„œ ์ƒํƒœ๊ด€๋ฆฌํ•˜๊ธฐ (feat. Context API, Redux, React Query)

์ตœ๊ทผ์— ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๊ฐ™์ด ์ผํ•˜๋Š” ์ธํ„ด๋ถ„๋“ค๊ณผ ์ž ๊น ์ด์•ผ๊ธฐ ํ•  ์ผ์ด ์ƒ๊ฒผ๋‹ค! ์š”์ฆ˜ ์ •๋ง ๋งŽ์€ ์ƒํƒœ๊ด€๋ฆฌ ๋„๊ตฌ๋“ค์ด ์žˆ๋Š”๋ฐ, ์ด ์ค‘์—์„œ ๋ฌด์–ผ ์–ด๋–ป๊ฒŒ ์„ ํƒํ•ด์•ผํ•  ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋Š” ๋ง์—

mingule.tistory.com

https://chanhuiseok.github.io/posts/react-15/

 

[React] ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ

[react] ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ

chanhuiseok.github.io

https://han-py.tistory.com/487

 

[react] ์ƒํƒœ๊ด€๋ฆฌ ๊ธฐ์ดˆ - ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ

react๋กœ ๊ตฌํ˜„์„ ํ•˜๋‹ค๋ณด๋ฉด, useState๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ˆ˜์ •ํ•œ๋‹ค. state๋ž€ ํ•œ๊ตญ์–ด๋กœ ์ƒํƒœ์ด๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ ์ƒํƒœ๊ด€๋ฆฌ์ธ ๋ฐ์ดํ„ฐ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋‹น์—ฐํ•œ ๋ง์ด

han-py.tistory.com

 

 

 

728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2025/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ