๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ธฐ์ˆ ๋ฉด์ ‘

1_state & ์ƒํƒœ๊ด€๋ฆฌ

๐Ÿ˜‰ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์™œ ํ• ๊นŒ์š”? 

1๏ธโƒฃ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ : 

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


2๏ธโƒฃ
UI ์ƒํƒœ ๊ด€๋ฆฌ:

์‚ฌ์šฉ์ž ์ž…๋ ฅ, API ํ˜ธ์ถœ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ๋“ฑ UI ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


3๏ธโƒฃ ์„ฑ๋Šฅ ์ตœ์ ํ™”: 

๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ˜Š ํ‰์†Œ state ๊ด€๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”?

1๏ธโƒฃ ( ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ) useState Hook ์‚ฌ์šฉ:

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋กœ์ปฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ( ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ) Redux ์‚ฌ์šฉ: 

์ƒํƒœ๋ฅผ ํ•˜๋‚˜์˜ store์—์„œ ๊ด€๋ฆฌํ•˜๊ณ , Action๊ณผ Reducer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

 

3๏ธโƒฃ Redux Tookit ์‚ฌ์šฉ:

๋ณต์žกํ•œ ๋ฆฌ๋•์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๐Ÿ”ฅ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ : ๋ฆฌ๋ Œ๋”๋ง, ์ปดํฌ๋„ŒํŠธ, ๋กœ์ปฌ / ์ง€์—ญ ์ƒํƒœ

์ƒํƒœ ๊ด€๋ฆฌ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” state์— ๋ณ€๋™์ด ์ƒ๊ธธ ๋•Œ์— ๋ฆฌ๋ Œ๋”๋ง ๋˜์–ด ํŽ˜์ด์ง€์— ๋ณ€๋™์„ ์ผ์œผํ‚ต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒฝ์šฐ, ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€๋Š” prop drilling์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

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

 

ํ‰์†Œ state ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด redux๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ๋กœ react query, ํด๋ผ์ด์–ธํŠธ์ธก ๋ฐ์ดํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ๋กœ recoil์„ ์‚ฌ์šฉํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ๋กœ react-query๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์น˜์™€ ๊ด€๋ จ๋œ ๋กœ์ง์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ , ์บ์‹ฑ๊ณผ ๋ฆฌํŒจ์นญ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋งค์šฐ ๊ฐ„ํŽธํ•˜๊ณ  ์œ ์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ ์ชฝ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—” recoil์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

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