๐Ÿ“•CS

React์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

stonesy 2024. 4. 19. 02:30
728x90

๐Ÿ“–props-drilling

๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ฑฐ์น˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ, ์ค‘๊ฐ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

props-drilling ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœ๏ธReact Context API

react์—์„œ๋„ React Context API๋ผ๋Š” ์ž์ฒด์ ์ธ ์ „์—ญ ์ƒํƒœ๊ด€๋ฆฌ API๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค. ๋‹จ, React Context API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์•กํŠธ ์•ฑ ์ตœ์ƒ๋‹จ์— Provider๊ฐ€ ๋ฐฐ์น˜๋œ๋‹ค. Provider๋Š” context๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์—๊ฒŒ context์˜ ๋ณ€ํ™”๋ฅผ ์•Œ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. context๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ Provider์˜ value prop์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ๋ Œ๋”๋ง๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์— ์‹ฌ๊ฐํ•œ ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ๏ธRedux

fluxํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ, action์ด ๋ฐœ์ƒํ•˜๋ฉด dispatcher์— ์˜ํ•ด store์— ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์ด ์ €์žฅ๋˜๊ณ , ๊ทธ ์ƒํƒœ์— ์˜ํ•ด view๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š”, ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํ๋ฅด๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋Œ€์ฒด๋กœ redux toolkit์„ ์„ค์น˜ํ•ด์„œ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ณ , redux saga๋ฅผ ์ด์šฉํ•ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.

*Redux 3๋Œ€ ์›์น™

1. ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์†Œ์Šค

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ์ƒํƒœ๋Š” ์ „์ฒด ๊ฐ์ฒด ํŠธ๋ฆฌ ์•ˆ์— ์ €์žฅ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ํ•œ ๊ณณ์—์„œ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์ƒํƒœ๋Š” ์ฝ๊ธฐ ์ „์šฉ

์ƒํƒœ๋Š” ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋Œ€์‹  ์•ก์…˜์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค. 

3. ๋ณ€ํ™”๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„

์ƒํƒœ ๋ณ€๊ฒฝ ๋กœ์ง์€ ์ˆœ์ˆ˜ํ•จ์ˆ˜์ธ ๋ฆฌ๋“€์„œ(Reducer)์— ์˜ํ•ด ๊ตฌํ˜„๋œ๋‹ค.

 

 

โœ๏ธRecoil

Recoil์€ react ์ „์šฉ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์œ„์ธ atom์„ ๊ฐ€์ง„๋‹ค. atom์— ๋ณ€ํ™”๊ฐ€ ์žˆ์œผ๋ฉด ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์žฌ๋ Œ๋”๋ง ๋œ๋‹ค.

action → dispatch → reducer → view ์˜ ํ๋ฆ„์„ ๊ฐ€์ง€๋Š” redux์™€ ๋‹ฌ๋ฆฌ

atom → selector → view ์˜ data-flow๋ฅผ ๊ฐ€์ง„๋‹ค.

๋˜ํ•œ recoil์€ ๋น„๋™๊ธฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ๋™์‹œ์„ฑ ๋ชจ๋“œ๋„ ์ง€์›ํ•œ๋‹ค.

 

 

 

npm trends๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” redux์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.(๋‚˜๋Š” recoil๋ฐ–์— ์‚ฌ์šฉ์•ˆํ•ด๋ดค์ง€๋งŒ..)

 

 

https://velog.io/@wjdwl002/React-%EC%83%81%ED%83%9C%EA%B4%80%EB%A6%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%B9%84%EA%B5%90%EB%B6%84%EC%84%9D-Redux-Recoil-%ED%8E%B8

728x90