- React์์ ์ํ๊ด๋ฆฌ๋ ์ ํ์ํ๊ฐ?
=> ๊ฐ ์ปดํฌ๋ํธ์ props๋ ์๋ก๊ฐ ๋ถ๋ชจ-์์ ๊ด๊ณ์ผ ๋ ์ ๋ฌํ๊ณ , ๋ฐ์ ์ ์๋ค. ํ์ง๋ง ๋ ์ปดํฌ๋ํธ๊ฐ ์๋ก ๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ์๋๋ผ๋ฉด,
props๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์ ํฐ ๋
ธ๋ ฅ๊ณผ ์๊ฐ์ด,,๋ ๋ค (
props drilling
) ๊ฐ ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ ์ฐ๊ฒฐ์ด ๋ง์์ง๊ฒ ๋๋ฉด ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ์ด๋ค props๋ฅผ ์ด๋๋ก ์ด๋ป๊ฒ ๋๊ฒจ์ฃผ๊ณ ์๋์ง์ ๊ดํด ์ถ์ ํ๊ธฐ์ ๋งค์ฐ ํ์ด ๋ค ๊ฒ์ด๋ค. ๋ฐ๋ผ์, React์์ ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ๊ฒ ๋๋ค.
=> state๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ๋๋ ๊ฐ์ด๋ค. ์ด๋ state(์ํ)๊ฐ ๋ณ๊ฒฝ๋๋ฉด, ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๊ณ ์ด๋ ์์ ์ปดํฌ๋ํธ์๊ฒ ์ด state๋ฅผ props๋ก ๋ฌผ๋ ค์ฃผ๊ฒ ๋๋ค. ํ์ง๋ง, ํ๋ก์ ํธ๊ฐ ๋ณต์กํด์ง๊ณ ๊ณต์ ํด์ผ ํ๋ state๊ฐ ์ฆ๊ฐํ ์๋ก ๋งค๋ฒ ์ ๋ฌ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ ์ํฉ์ ์ง๋ฉดํ๊ฒ ๋๋ค. ๋ฐ๋ผ์, state ๊ฐ์ด ์ด๋์์ ๋ณํ๋ ์ง, ์ดํ ์ด ์์ ์ผ๋ก ์ธํด ์ด๋ค ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ๋ ์ง ์์๋ด๊ธฐ ํ๋ค๋ค
-
๊ด๋ฆฌ ํด์ผ ํ๋ ์ํ์ ๋ํ ๊ธฐ์ค์ ๋ฌด์์ธ๊ฐ? => ์ํ์ ์ข ๋ฅ ->๋ก์ปฌ ์ํ: ํน์ ์ปดํฌ๋ํธ ์์์๋ง ๊ด๋ฆฌ ->์ง์ญ ์ํ: state๊ฐ ๋ช๋ช์ ๊ตญํ๋์ด ์ํฅ ->์ ์ญ ์ํ: ์ ์ฒด ํน์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋์์ ๊ฑธ์ณ ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ ๋์ฒด๋ก ์ ์ญ ์ํ๋ก ๊ด๋ฆฌํด์ผ ํ๋ค (ex, ํ ๋ง ์ค์ , ์ธ์ด ์ค์ ๋ฑ, ์ธ์๋ props๋ฅผ ๋์์ ๊ฐ๋ ์ฌ๋ฌ ๊ฒฝ์ฐ๋ค) ์ ์ญ ์ํ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ: ์ ์ญ์ํ๊ฐ ๋ฐ๋ ๋๋ง๋ค ๋ฆฌ๋ ๋๊ฐ ์ผ์ด๋ ์ ์์, ๋ณํ๊ฐ ์ฆ์ง ์๊ณ ์๋น์ค ์ ๋ฐ์ ๊ฑธ์น ๊ฒฝ์ฐ
์ ์ญ ์ํ
์ด์ฉ -
์ด๋ค ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๋ค ์ํฉ์์ ์ฌ์ฉํด์ผ ํ ๊น? ( ์ฅ๋จ์ ๋๋ ๊ฐ๋จ ๋น๊ต ๋ถ์ ) =>Redux: ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Flux ์ํคํ ์ณ๋ฅผ ๋ฐ๋ฅด๋ฉฐ ๋จ๋ฐํฅ ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ์ ํตํด ์ํ ๊ด๋ฆฌ, ํ์ฅ์ฑ์ ๋๋ ค์ค ์ฅ์ : ์ํ ์์ธก ๊ฐ๋ฅ, ์ ์ง ๋ณด์ ์ฉ์ด, ๋๋ฒ๊น ์ด ์ฌ์, ํ ๊ณณ์์ ๊ด๋ฆฌ ๋จ์ : ์ฝ๋์ ์ค๋, ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ค์ด ์ฃผ์ง ์์, ์ฐ๊ฒฐ์ฑ(
mapStateToProps
์ ๊ฐ์ ๋ฉ์๋ ํ์)
=> MobX: functional reactive programming์ ํฌ๋ช
ํ๊ฒ ์ ์ฉ
์ฅ์ : ๊ฐ์ฒด ์งํฅ์ , ๊น๋ํ๊ฒ ๊ตฌ์ฑ, ์บก์ํ(๋ฉ์๋๋ฅผ ํตํด์๋ง state ๋ณ๊ฒฝ)
๋จ์ : ๋ถํธํ ๋๋ฒ๊น
(console.log
์ด์ฉ), ํจ์ํ ๊ตฌ์ฑ์ด๋ผ๋ฉด ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด useContext
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ์ฐ๊ฒฐ์ ์ํด hoc
๋ก ๋ฉํํด์ผ ํจ, ๋ ํผ๋ฐ์ค ๋ถ์กฑ
=> Context API: ์ฅ์ : ์ ๊ทผ์ฑ์ด ๋ฎ์, ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๊ณ ๊ฐ๊ฒฐํจ ๋จ์ : rendering(value๊ฐ์ด ๋ณํ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ ๋ํ ๋ฆฌ๋๋๋ง) ๊ด์ฌ์ฌ์ ๋ฐ๋ผ ๋ชจ๋ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํด์ผ ํจ
=>Recoil: meta์์ ๋ง๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ธฐ์กด context์ ๋ฌธ์ , ์ฝ๋ ๋ถํ์ ์ด๋ ค์์ ํด๊ฒฐํ๊ณ ์ ๋ง๋ฆ ์ฅ์ : ๊ฐ๋จํ ์ธํฐํ์ด์ค, ์ฆ๋ถ ๋ฐ ๋ถ์ฐ, ์ปดํฌ๋ํธ ๋น์์ ๋จ์ : ๋ ํผ๋ฐ์ค ๋ถ์กฑ, ํธํ์ฑ
-
React์์ ๋ ๋๋ง์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น? => state ์ ์ธ ์์น(์ปดํฌ๋ํธ ์ต์์ ์ปดํฌ๋ํธ) => ๊ฐ์ฒด ํ์ ์ state๋ ์ต๋ํ ๋ถํ ํ๊ธฐ => hooks์์ shouldComponentUpdate ๋์ฒด(
React.memo
) =>React.memo
=> mapํจ์ ์ฌ์ฉ์ index๋ก key๊ฐ ์ฌ์ฉํ์ง ์๊ธฐ =>useMemo
: ์ข ์ ๋ณ์๋ค์ด ๋ณํ์ง ์์ผ๋ฉด ํจ์๋ฅผ ๊ตณ์ด ๋ค์ ํธ์ถํ์ง ์๋๋ก ํ์ฌ ์๊ฐ๊ณผ ๋ฆฌ๋ ๋๋ง ๋ฐฉ์ง =>useCallback
: ์ข ์ ๋ณ์๋ค์ด ๋ณํ์ง ์์ผ๋ฉด ๊ตณ์ด ํจ์๋ฅผ ์ฌ์์ฑํ์ง ์๊ณ ํ์ ์ปดํฌ๋ํธ์ props๋ก ์ ๋ฌํ๊ธฐ -
์ด๋ฅผ ์ํด ์ด๋ค ์์ผ๋ก ๋น์ฆ๋์ค ์ค๊ณ๋ฅผ ์งํํด์ผ ํ ๊น => ์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ณ ์ง๊ด์ ์ด๊ณ ์ต์ํํ๊ธฐ! ๋ํ state์ ์ ์ ํ ์ค๊ณ!! ์ปดํฌ๋ํธ๋ฅผ
์ฌ์ฌ์ฉ์ฑ
๊ณผ๋ฒ์ฉ์ฑ
์ ๋ง์ถ์ด์ ์ค๊ณ