๐Ÿ’ป Web

[React] Context API, useContext Hook ์‚ฌ์šฉํ•˜๊ธฐ

ji_wonna 2022. 7. 8. 00:17

Context๋ž€?

Context API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ props๋กœ ์ƒํƒœ์™€ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›์ง€ ์•Š๊ณ ๋„ Context๋กœ ํ•œ ๋ฒˆ์— ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋†’๊ณ  ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ๊ฐ™์ด ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.

 

Context ๋งŒ๋“ค๊ธฐ

createContext ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ Context๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ์—๋Š” ๊ธฐ๋ณธ ์ƒํƒœ๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๋ฌด์กฐ๊ฑด ์ƒํƒœ ๊ฐ’๋งŒ ์žˆ์–ด์•ผ ๋˜๋Š” ๊ฑด ์•„๋‹ˆ๊ณ  actions์— ์ •์˜ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

Consumer์™€ Provider ์‚ฌ์šฉํ•˜๊ธฐ

Consumer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Context์˜ ์ƒํƒœ ๊ฐ’์„ ์กฐํšŒํ•˜๊ณ  Provider๋กœ Context์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ Provider์—์„œ๋Š” Context์˜ ๊ฐ’์„ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์•ˆ ๊ทธ๋Ÿฌ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

 

๋ฆฌ์•กํŠธ Hooks ์ค‘์—์„œ useContext๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Consumer๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

useContext Hook ์‚ฌ์šฉํ•˜๊ธฐ

๋จผ์ € useContext๋ฅผ import ํ•ด์˜จ ๋’ค, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•˜๊ฒŒ Context์˜ ์ƒํƒœ ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ Hook์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ํ•จ์ˆ˜ํ˜•์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ •๋ฆฌ!

์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ์—๋Š” props๋กœ ๊ณ„์† ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” Context API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.