Daily/Today I Learned

22.07.06_TIL

ํ˜ธ๋ฐ€์ด 2022. 7. 6. 18:00

๐Ÿ“Œ Redux ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹ค์Šตํ•˜๋Š” ๋‚ ์ด๋‹ค. ์–ด์ œ๋Š” prop๋ฅผ ๋‚จ๋ฐœํ•˜์—ฌ prop drilling์ด ์ƒ๊ฒผ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ React-Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ store(์ƒํƒœ ์ €์žฅ์†Œ)์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ(๊ฐฑ์‹ , ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ)๋ฅผ ํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์œ„์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๊ณ , Redux๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ ์†์— ์ตํž ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋˜์—ˆ๋‹ค!!

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

Redux

  • ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (React ์—†์ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
  • ์ปดํฌ๋„ŒํŠธ์™€ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ํŒจํ„ด
  • ์ƒํƒœ ๋ณ€๊ฒฝ ๋กœ์ง์„ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹จ์ˆœํ•œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

Redux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ prop ์—†์ด state๋ฅผ ์ง์ ‘ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ state๋ฅผ ๋„˜๊ฒจ์•ผ ํ•˜๋Š”๋ฐ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.
    • state๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ state๋ฅผ ๋ณด๊ด€ํ•˜์—ฌ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์ด props ์—†์ด ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ƒํƒœ(state)๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.
    • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ state๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒฝ์šฐ Redux๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์—๋Ÿฌ๋ฅผ ์ฐพ๊ธฐ ํž˜๋“ค์ง€๋งŒ state ์ €์žฅ์†Œ์—์„œ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

Redux์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๊ตฌ์กฐ: (Action → Dispatch → Reducer → Store)

  1. ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ณ€๊ฒฝ๋ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Action ๊ฐ์ฒด ์ƒ์„ฑ
  2. Action๊ฐ์ฒด: Dispatch ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ
    • ์–ด๋–ค ์•ก์…˜์„ ์ทจํ•  ๊ฒƒ์ธ์ง€ ์ •์˜ํ•ด ๋†“์€ ๊ฐ์ฒด
    • type์€ Action ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ๋ช…์‹œํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.(๋Œ€๋ฌธ์ž, Snake Case๋กœ ์ž‘์„ฑ)
    •  payload* : ์•ก์…˜์— ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ
  3. Dispatch ํ•จ์ˆ˜: Action ๊ฐ์ฒด๋ฅผ Reducer ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ
    • Reducer๋กœ Action์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
  4. Reducer ํ•จ์ˆ˜: Action ๊ฐ์ฒด์˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ณ , ๊ทธ ๊ฐ’์— ๋”ฐ๋ผ ์ „์—ญ ์ƒํƒœ ์ €์žฅ์†Œ Store์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ
    • Dispatch์—๊ฒŒ์„œ ์ „๋‹ฌ๋ฐ›์€ Action ๊ฐ์ฒด์˜ type์— ๋”ฐ๋ผ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜ (์ˆœ์ˆ˜ ํ•จ์ˆ˜)
  5. ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, React๋Š” ํ™”๋ฉด์„ ์žฌ ๋ Œ๋”๋ง
  6. Store: ์ƒํƒœ๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ์˜ค์ง ํ•˜๋‚˜๋ฟ์ธ ์ €์žฅ์†Œ์˜ ์—ญํ• 

Redux์˜ ์„ธ ๊ฐ€์ง€ ์›์น™

  1. Single source of truth
    • ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ๊ฐ™์€ ๊ณณ์—์„œ ๊ฐ€์ง€๊ณ  ์™€์•ผํ•œ๋‹ค.
  2. State is read-only
    • ์ƒํƒœ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋Š” ๋œป์œผ๋กœ, Redux์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ , Action ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Changes are made with pure functions
    • ๋ณ€๊ฒฝ์€ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ƒํƒœ๊ฐ€ ์—‰๋šฑํ•œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์ผ์ด ์—†๋„๋ก ์ˆœ์ˆ˜ํ•จ์ˆ˜๋กœ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋Š” Reducer์™€ ์—ฐ๊ฒฐ๋˜๋Š” ์›์น™.

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

[udemy] React ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ด๋ผ๋„ ๊พธ์ค€ํžˆ ๋“ฃ๊ธฐ)

Redux ๋ณต์Šตํ•ด๋ณด๊ธฐ

 

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • Redux์˜ ๊ตฌ์กฐ: Action -> Dispatch -> Reducer -> Store
  • Redux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
  • Redux์˜ ์„ธ ๊ฐ€์ง€ ์›์น™

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.07.08_TIL  (0) 2022.07.08
22.07.07_TIL  (0) 2022.07.07
22.07.05_TIL  (0) 2022.07.05
22.07.04_TIL  (0) 2022.07.04
22.07.01_TIL  (0) 2022.07.01