useContext
Last updated
Last updated
useContext
Context
๋ก ๋ถ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ฐ์์ฌ ์ ์๊ฒ ๋์์ฃผ๋ ์ญํ ํ๋ Hook
๋ฆฌ์กํธ์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก props๋ฅผ ํตํด '๋จ๋ฐฉํฅ'์ผ๋ก ํ๋ฅธ๋ค. ์์ฒญ ํฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๋ ๊ณตํต์ ์ผ๋ก ํ์ํ ์ ์ญ์ ์ธ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์๋ค. ์๋ฅผ ๋ค์ด GlobalData์ธ ์ ์ญ ๋ฐ์ดํฐ๋ฅผ ์ผ์ผ์ด props๋ก ๋จ๊ณ๋ณ๋ก ์ ๋ฌํด์ผ ํ๋ค๋ฉด ๋ฌธ์ ๋ค์ด ๋ฐ์ํ๋ค.
์ค๊ฐ ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ์ฌ ์ ๋ฌํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
props๋ฅผ ๊ณ์ ์ ๋ฌํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค.
์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๊ฐํ ์์กด์ฑ์ ๊ฐ์ง ์ ์๋ค.
๋ฆฌ์กํธ๋ ์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํด ์ฃผ๋ Context API๋ฅผ ์ ๊ณตํ๋ค. Context
๋ ์ฑ ์์์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ผ๋ฆฌ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. Context๋ฅผ ์ฌ์ฉํ๋ฉด Props๋ก ๋ฐ์ดํฐ๋ฅผ ์ผ์ผ์ด ์ ๋ฌํด ์ฃผ์ง ์์๋ ์์ ์ปดํฌ๋ํธ์ data๊ฐ ํ์ํ ํ์ ์ปดํฌ๋ํธ๋ค์ useContext ํ
์ ์ฌ์ฉํด์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ๋ง ํ๋ฉด ๋๋ค.
Context API๋ ์ ์ญ์ ์ผ๋ก ์ํ๋ฅผ ๊ณต์ ํด์ฃผ๋ ๊ธฐ๋ฅ๋ง ์ํ ํ๋ค.
์์ ์ปดํฌ๋ํธ์ Context๊ฐ ๋ง์ฝ ๋ณ๊ฒฝ๋๋ state ๊ฐ์ด๋ผ๋ฉด state๊ฐ์ด ๋ณ๊ฒฝ๋์ด ๋ฆฌ๋ ๋๋ง ์ผ์ด๋๊ฒ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํ์ ์ปดํฌ๋ํธ๊น์ง ๋ฆฌ๋ ๋๋ง์ด ๋๋ ์ด์๊ฐ ์๊ณ , ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ React.memo ๋ฅผ ํตํด ์ต์ ํ๋ฅผ ํด์ค์ผ ํ๋ค. ๋ํ Context๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ค์์ง๋ฏ๋ก ๊ผญ ํ์ํ ๋๋ง ์ฌ์ฉ ํด์ผ ํ๋ค.
Context์ ์ฃผ๋ ๋ชฉ์ ์ธ ๋ค์ํ ๋ ๋ฒจ์ด ์๋ ๋ง์ ์ปดํฌ๋ํธ๋ค์๊ฒ ์ ์ญ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํจ์ด๋ค. ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์์๋ Context๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๋จ์ง Prop Drilling์ ํผํ๊ธฐ ์ํ ๋ชฉ์ ์ด๋ผ๋ฉด Component Composition(์ปดํฌ๋ํธ ํฉ์ฑ)์ด ๋ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์ ์ํ๊ณ ์๋ค.
์ํ๋ณํ๊ฐ ๊ฑฐ์ ์ผ์ด๋์ง ์์ ๊ฒ์ผ๋ก ์์๋๋ ํ ๋ง์ ๊ฐ์ ๊ฐ์ ์ ๋ฌํ๊ธฐ์ ์ ํฉ
Context ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. defaultValue
๋งค๊ฐ๋ณ์๋ ํธ๋ฆฌ ์์์ ์ ์ ํ Provider๋ฅผ ์ฐพ์ง ๋ชปํ์ ๋๋ง ์ฐ์ด๋ ๊ฐ์ด๋ค.
Provider๋ value prop์ ๋ฐ์์ ์ด ๊ฐ์ ํ์์ ์๋ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ๋ค.