Context API vs Redux ๐Ÿ˜‡

๊ณ ์„์ง„
7 min readJan 20, 2021

--

๋‹ญ์žก๋Š”๋ฐ ์†Œ์žก๋Š” ์นผ ์“ฐ์ง€๋ง์ž

์š”์•ฝ ๐Ÿ’ก

  1. Context ์™€ Redux ๋Š” ๊ฐ™์€ ์ผ์„ ํ•˜๋‚˜
    ๋‘˜์€ ๋‹ค๋ฅธ ๋„๊ตฌ์ด๋ฉฐ, ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  2. Context ๋Š” ์ƒํƒœ๊ด€๋ฆฌ ๋„๊ตฌ์ธ๊ฐ€ ?
    ์•„๋‹ˆ๋‹ค. Context API ๋Š” ๋‹จ์ง€ ์ข…์†์„ฑ ์ฃผ์ž…์˜ ํ•œ ํ˜•ํƒœ์ผ๋ฟ ์•„๋ฌด๊ฒƒ๋„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ƒํƒœ๊ด€๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ useState ์™€ useReducer ๋ฅผ ํ†ตํ•ด ์ผ์–ด๋‚œ๋‹ค.
  3. useReducer ๋Š” Redux ์˜ ๋Œ€์ฒดํ’ˆ์ธ๊ฐ€ ?
    ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์œ ์‚ฌํ•œ ๋ถ€๋ถ„๋“ค์ด ์žˆ์ง€๋งŒ ๊ธฐ๋Šฅ์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  4. ์–ธ์ œ Context ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜
    props drilling ์„ ํ”ผํ•˜๊ณ ์ž ํ•  ๋•Œ
  5. ์–ธ์ œ Context ์™€ useReducer ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜
    ํŠน์ • ์ปดํฌ๋„ŒํŠธ์—์„œ ์–ด๋Š์ •๋„ ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๊ฒฝ์šฐ
  6. Redux ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜
    - ์—ฌ๋Ÿฌ ์œ„์น˜์— ๋งŽ์€ ์–‘์˜ ์ƒํƒœ ๊ฐ’์ด ์กด์žฌ ํ•  ๋•Œ
    - ์—…๋ฐ์ดํŠธ ๋กœ์ง์ด ๋ณต์žก ํ•  ๋•Œ
    - ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ž‘์—… ํ•  ๋•Œ
    - ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ๊ฐํ™”๊ฐ€ ํ•„์š” ํ•  ๋•Œ
    - ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ, ๋ฉ”๋ชจ์ด์ œ์ด์…˜, ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”๋“ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š” ํ•  ๋•Œ

React Context ๋Š” ๋ฌด์—‡์ธ๊ฐ€ ?

์ผ๋ฐ˜์ ์ธ React ์—์„œ Prop ์ „๋‹ฌ์˜ ํ๋ฆ„์€ ํ•˜ํ–ฅ์‹์ด๋‹ค. (๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ)
์ „๋‹ฌ๋˜๋Š” prop ์ด ๋งŽ์•„์ง€๊ณ  ์ปดํฌ๋„ŒํŠธ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๋ฒˆ๊ฑฐ๋กœ์›Œ ์งˆ ์ˆ˜ ์žˆ๋‹ค. Context Tree ๋Š” ์ปจํ…์ŠคํŠธ ์•ˆ์— ํฌํ•จ๋œ ๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ prop ์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ , ์–ด๋””์„œ๋“  ์ƒํƒœ๊ฐ’์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

๋ชฉ์  ๋ฐ ์‚ฌ๋ก€

Context ๋Š” ์‹ค์ œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ์ˆœ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ํŒŒ์ดํ”„์™€ ๊ฐ™๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ชฉ์ ์€ prop-drilling ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
prop-passing ๋กœ์ง์„ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํ•ด์ง„๋‹ค.

๊ฐœ๋…์ ์œผ๋กœ๋Š” ์ข…์†์„ฑ ์ฃผ์ž…์˜ ํ•œ ํ˜•ํƒœ์ด๋‹ค. ์ž์‹ ๊ตฌ์„ฑ ์š”์†Œ์— ํŠน์ •ํ•œ ์ƒํƒœ๊ฐ’์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฐ’ ์ž์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์„ค์ •ํ•˜๋ ค ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ์ƒ์œ„ ์š”์†Œ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ํ•ด๋‹น ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

Redux ๋Š” ๋ฌด์—‡์ธ๊ฐ€ ?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๋Œ€ํ•œ ์ƒํƒœ ์ค‘์•™ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋ฉฐ ์•ก์…˜ ์ด๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

Redux ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด๊ณผ ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒํƒœ๊ฐ€ ์–ธ์ œ, ์–ด๋””์„œ, ์–ด๋–ป๊ฒŒ, ์™œ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค

  • ์ƒํƒœ ๊ด€๋ฆฌ
  • Redux ์˜ ๋ชฉ์ ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ƒํƒœ ๊ฐ’๋“ค์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๊ฒƒ์ด๋‹ค.

reducer ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ ๋ฐ ์ €์žฅ์†Œ ํ™•์žฅ ๊ฐœ๋…์œผ๋กœ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ Redux Devtools ๋ฅผ ์ด์šฉํ•˜์—ฌ ์•ฑ์˜ ์ž‘์—… ๊ธฐ๋ก ๋ฐ ์ƒํƒœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Redux ์™€ React

Redux ์ž์ฒด๋Š” ui ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. React, Vue, vanilla JS ๋“ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

React ์—์„œ Redux ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” React-Redux ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Redux ์—์„œ ์ƒํƒœ ๊ฐ’์„ ์ฝ๊ณ  action ์„ React ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ Redux ์ €์žฅ์†Œ์™€ ์ƒํ˜ธ ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” UI ๋ฐ”์ธ๋”ฉ ๋ ˆ์ด์–ด์ด๋‹ค.

React-Redux ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  React ์š”์†Œ๋“ค์ด Redux ์ €์žฅ์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๋Š” React-Redux ๋‚ด๋ถ€์—์„œ Context ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ React-Redux ๋Š” ํ˜„์žฌ์˜ ์ƒํƒœ๊ฐ’์ด ์•„๋‹Œ Context ๋ฅผ ํ†ตํ•ด Redux ์ €์žฅ์†Œ ์ธ์Šคํ„ด์Šค๋งŒ ์ „๋‹ฌํ•œ๋‹ค๋Š”์ ์ด๋‹ค.

Redux ์ €์žฅ์†Œ๋Š” React-Redux ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์— Context Tree ์— ์‚ฝ์ž…๋œ๋‹ค.

(React-) Redux ์˜ ๋ชฉ์  ๋ฐ ์‚ฌ๋ก€

  • ui ๋ ˆ์ด์–ด์™€ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง ์ž‘์„ฑ์ด ํ•„์š”ํ•  ๋•Œ
  • ์„œ๋กœ ๋‹ค๋ฅธ ui ๊ณ„์ธต๊ฐ„์— ์ƒํƒœ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•  ๋•Œ
  • Redux ๋ฏธ๋“ค์›จ์–ด ๊ธฐ๋Šฅ์„ ๋นŒ๋ ค ์•ก์…˜์ด ์ „๋‹ฌ ๋  ๋•Œ ์ถ”๊ฐ€์ ์ธ ๋กœ์ง์ด ํ•„์š”ํ•  ๋•Œ
  • Redux ์ƒํƒœ์˜ ์œ ์ง€
  • dev tool ์„ ์ด์šฉํ•œ ๋ฒ„๊ทธ ๋””๋ฒ„๊น…

Context๊ฐ€ โ€˜์ƒํƒœ๊ด€๋ฆฌโ€™๊ฐ€ ์•„๋‹Œ ์ด์œ 

์ƒํƒœ๊ด€๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์ƒํƒœ๊ด€๋ฆฌ๋ผ ํ•œ๋‹ค.

  • ์ดˆ๊ธฐ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • ํ˜„์žฌ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ’ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

React useState ์™€ useReducer ๊ฐ€ ์ƒํƒœ ๊ด€๋ฆฌ์˜ ์ข‹์€ ์˜ˆ์ด๋‹ค.

  • hook ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊ธฐ ๊ฐ’ ์ €์žฅ
  • hook ์„ ํ˜ธ์ถœํ•˜์—ฌ ํ˜„์žฌ ๊ฐ’์„ ์ฝ๋Š”๋‹ค
  • ์ œ๊ณต๋œ setState, dispatch ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
  • ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ re-render ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋์Œ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Redux, Mobx ๋„ ์œ„์˜ ์กฐ๊ฑด๋“ค์„ ์ถฉ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ๊ด€๋ฆฌ๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • React-Query, SWR, Apollo ๋ฐ Urql ๊ณผ ๊ฐ™์€ ์„œ๋ฒ„ ์บ์‹ฑ ๋„๊ตฌ๋“ค์€ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  hook ๋“ค์„ ํ†ตํ•ด ํ˜„์žฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ โ€˜์„œ๋ฒ„ ๋ณ€ํ™”' ๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— โ€˜์ƒํƒœ๊ด€๋ฆฌ' ๋ผ๊ณ  ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

React Context ์˜ ๊ฒฝ์šฐ ์œ„์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ๊ด€๋ฆฌ ๋„๊ตฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค. Context ๋Š” ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ค์ œ ์ƒํƒœ๊ด€๋ฆฌ๋Š” useState/useReducer hook ๊ณผ ํ•จ๊ป˜ ๋ฐœ์ƒํ•œ๋‹ค.

> ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Context ๋Š” ์ƒํƒœ(์ด๋ฏธ ์กด์žฌํ•˜๋Š”, ์–ด๋”˜๊ฐ€์— ์žˆ๋Š”)๊ฐ€ Context Tree ๋‚ด๋ถ€์— ํฌํ•จ๋œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ๊ณต์œ ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Context ์™€ useReducer

useReducer ๋Š” Redux + React-Redux ์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๊ฐ’์˜ ์ €์žฅ
  • reducer ํ•จ์ˆ˜
  • action ์ „๋‹ฌ
  • ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ์—์„œ ์ฝ๋Š” ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋Šฅ๊ณผ ๋™์ž‘์—๋Š” ๋งŽ์€ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

  • Context + useReder ๋Š” Context ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ƒํƒœ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์˜์กดํ•œ๋‹ค. React-Redux ๋Š” Context ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ Redux ์Šคํ† ์–ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  • useReducer ์˜ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์ƒํƒœ ๊ฐ’์„ ์ƒ์„ฑ ํ•  ๋•Œ ํ•ด๋‹น Context ๋‚ด๋ถ€์— ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์ƒํƒœ๊ฐ’์˜ ์ผ๋ถ€์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๋”๋ผ๋„ ๊ฐ•์ œ๋กœ re-render ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค. React-Redux ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ์†Œ ์ƒํƒœ์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๊ฒฝ ๋  ๋•Œ๋งŒ re-render ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Context + useReducer ๋Š” React ์˜ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— React ์™ธ๋ถ€์—์„œ๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. Redux ๋Š” UI ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— React ์™€ ๋ณ„๋„๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • React DevTools ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ์˜ ์ƒํƒœ ๊ฐ’์€ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ „๋‹ฌ๋œ action, ๊ณผ payload, ์ฒ˜๋ฆฌ ๋œ ํ›„์˜ ์ƒํƒœ๋“ฑ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค. Redux Devtools ์„ ์ด์šฉํ•˜๋ฉด ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ƒํƒœ ์ฐจ์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • useReducer ๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์—†๋‹ค.

> Context API + useReducer ๋Š” ๋‚ฎ์€ ๊ทœ๋ชจ์™€ ๋นˆ๋„์˜ ์—…๋ฐ์ดํŠธ์™€ ๊ฐ™์€ ์ •์ ์ธ ์ƒํƒœ์˜ ์ „๋‹ฌ์—๋Š” ๊ดœ์ฐฎ์ง€๋งŒ, Flux ์™€ ์œ ์‚ฌํ•œ ์ƒํƒœ ์ „ํŒŒ์˜ ๋Œ€์ฒด๋ฌผ๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค.

๋ถˆํ•„์š”ํ•œ re-render ๋ฅผ ์ค„์ด๊ณ  ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ณ„ ์ปจํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  React.memo, useMemo ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธธ ๊ถŒ์žฅํ•˜์ง€๋งŒ, React-Redux ๋ฅผ ์žฌ์ฐฝ์กฐํ•˜๋Š” ํ–‰์œ„์™€ ๊ฐ™๋‹ค.

๊ถŒ์žฅ์‚ฌํ•ญ

ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด๋ผ

  • ๋‹จ์ˆœ prop-drilling ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด Context ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
  • ์ ๋‹นํžˆ ๋ณต์žกํ•œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด Context + useReducer ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
  • ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ๋งŒ re-render ์‹œํ‚ค๊ฑฐ๋‚˜, ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Redux + React-Redux ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ

--

--

๊ณ ์„์ง„
๊ณ ์„์ง„

Written by ๊ณ ์„์ง„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ๋ž‘ํ•˜๋Š” ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค :)

No responses yet