useContext

useContext

Tags
Frontend
React
Published
Author

useContext๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ context๋ฅผ ์ฝ๊ณ  ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” React Hook์ž…๋‹ˆ๋‹ค.

useContext(SomeContext)
๋งค๊ฐœ๋ณ€์ˆ˜
SomeContext : ์ด์ „์— createContext๋กœ ์ƒ์„ฑํ•œ context์ž…๋‹ˆ๋‹ค. context ์ž์ฒด๋Š” ์ •๋ณด๋ฅผ ๋ณด์œ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ปดํฌ๋„ŒํŠธ์—์„œ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ

  • <Context.Provider>๋Š” ๋ฐ˜๋“œ์‹œ useContext() ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์œ„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • React๋Š” ๋ณ€๊ฒฝ๋œ value๋ฅผ ๋ฐ›๋Š” provider๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•ด๋‹น context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž์‹๋“ค์— ๋Œ€ํ•ด์„œ๊นŒ์ง€ ์ „๋ถ€ ์ž๋™์œผ๋กœ ๋ฆฌ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
import { useContext } from 'react'; function Button() { const theme = useContext(ThemeContext); // ...
useContext๋Š” ์ „๋‹ฌํ•œ context์— ๋Œ€ํ•œ context ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. context ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด React๋Š” ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํŠน์ • context์— ๋Œ€ํ•ด ์œ„์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด context provider๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

ํ•จ์ •

useContext()๋Š” ํ•ญ์ƒ ๊ทธ๊ฒƒ์„ ํ˜ธ์ถœํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์œ„์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด provider๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. useContext()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ provider๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Plus

Context๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ props๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ ๋„ ๊นŠ์ด ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ทธ ์•„๋ž˜ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย