์ผ๋ฐ์ ์ธ React์์ prop ์ ๋ฌ์ ํ๋ฆ์ ํํฅ์์ด๋ค. (๋ถ๋ชจ์์ ์์์ผ๋ก) ์ ๋ฌ๋๋ prop์ด ๋ง์์ง๊ณ ์ปดํฌ๋ํธ ๊น์ด๊ฐ ๊น์ด์ง๋ฉด ๊ด๋ฆฌ๊ฐ ๋ฒ๊ฑฐ๋ก์ ์ง ์ ์๋ค. Context Tree๋ ์ปจํ ์คํธ ์์ ํฌํจ๋ ๋ชจ๋ ๋ ๋ฒจ์์ ๋ช ์์ ์ผ๋ก prop์ ์ ๋ฌํ์ง ์๊ณ , ์ด๋์๋ ์ํ๊ฐ์ ์ ๊ทผ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
Context๋ ์๋ฌด๊ฒ๋ ๊ด๋ฆฌํ์ง ์๋๋ค. ๋จ์ํ ๊ฐ์ ์ ๋ฌํ๋ ํ์ดํ์ ๊ฐ๋ค. ์ฌ์ฉํ๋ ์ฃผ์ ๋ชฉ์ ์ prop-drilling
์ ํผํ๋ ๊ฒ์ด๋ค. prop-passing ๋ก์ง์ ์์ฑํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋จ์ํด์ง๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๋ํ ์ํ ์ค์ ์ ์ฅ์ ์ญํ ์ ํ๋ฉฐ ์ก์ ์ด๋ผ๋ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธ ํ๊ธฐ ์ํ ํจํด ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Redux์์ ์ ๊ณตํ๋ ํจํด๊ณผ ๋๊ตฌ๋ค์ ์ฌ์ฉํ๋ฉด ์ํ๊ฐ ์ธ์ , ์ด๋์, ์ด๋ป๊ฒ, ์ ์ ๋ฐ์ดํธ ๋์๋์ง ์ฝ๊ฒ ์ดํด ํ ์ ์๋ค.
React์์ Redux๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ฉ๋๋ React-Redux ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Redux์์ ์ํ ๊ฐ์ ์ฝ๊ณ action์ React ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ์ฌ Redux ์ ์ฅ์์ ์ํธ ์์ฉ ํ ์ ์๋๋ก ๋์์ฃผ๋ UI๋ฐ์ธ๋ฉ ๋ ์ด์ด์ด๋ค.
React-Redux ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ React ์์๋ค์ด Redux ์ ์ฅ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฐ ์ด๋ React-Redux ๋ด๋ถ์์ Context ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ React-Redux ๋ ํ์ฌ์ ์ํ๊ฐ์ด ์๋ Context ๋ฅผ ํตํด Redux ์ ์ฅ์ ์ธ์คํด์ค๋ง ์ ๋ฌํ๋ค๋์ ์ด๋ค.
์ํ๊ด๋ฆฌ๋ผ ํ๋ฉด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
React useState
์ useReducer
๊ฐ ์ํ ๊ด๋ฆฌ์ ์ข์ ์์ด๋ค.
Context๋ ์ํ(์ด๋ฏธ ์กด์ฌํ๋, ์ด๋๊ฐ์ ์๋)๊ฐ Context Tree ๋ด๋ถ์ ํฌํจ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ ๊ณต์ ๋๋ ๋ฐฉ์์ด๋ค.
useReducer๋ Redux + React-Redux์ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Context + useReducer๋ Context๋ฅผ ํตํด ํ์ฌ ์ํ ๊ฐ์ ์ ๋ฌํ๋๋ฐ ์์กด.
React-Redux๋ Context๋ฅผ ํตํด ํ์ฌ Redux ์คํ ์ด ์ธ์คํด์ค๋ฅผ ์ ๋ฌํ๋ค.
useReducer์ ๊ฒฝ์ฐ ์๋ก์ด ์ํ ๊ฐ์ ์์ฑ ํ ๋ ํด๋น Context ๋ด๋ถ์ ํฌํจ๋ ์ปดํฌ๋ํธ๋ค์ด ์ํ ๊ฐ์ ์ผ๋ถ์๋ง ๊ด์ฌ์ด ์๋๋ผ๋ ๊ฐ์ ๋ก re-render ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
re-render ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ ํ ์ ์๋ค. React-redux๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฅ์ ์ํ์ ํน์ ๋ถ๋ถ๋ง ์ฌ์ฉํ๊ณ ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ ๋ ๋๋ง re-render ํ ์ ์๋ค.
Context + useReducersms React์ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ React ์ธ๋ถ์์๋ ์ฌ์ฉ์ด ๋ถ๊ฐํ๋ค. Redux๋ UI ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ React์ ๋ณ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
useReducer๋ ๋ฏธ๋ค์จ์ด๊ฐ ์๋ค.
๋จ์ prop-drilling์ ํผํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด Context๋ฅผ ์ฌ์ฉํ์.
์ ๋นํ ๋ณต์กํ ์ปดํฌ๋ํธ๊ฐ ์๊ฑฐ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด Context +useReducer๋ฅผ ์ฌ์ฉํด๋ผ
ํน์ ๊ตฌ์ฑ ์์๋ง re-render ์ํค๊ฑฐ๋, ์ฌ์ด๋์ดํํธ๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด ํ์ํ๋ค๋ฉด Redux + React+Redux๋ฅผ ์ฌ์ฉ