<star />
์ปจํ ์คํธ ๋ณธ๋ฌธ
์ปจํ ์คํธ (Context) ๊ฐ ๋ญ์ผ? ๐
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์กด์ props ๋ฅผ ํตํด ์ ๋ฌํ๋ ๋ฐฉ์ ๋์ ,
์ปดํฌ๋ํธ ํธ๋ฆฌ (component tree) ๋ฅผ ํตํด ๊ณง๋ฐ๋ก ์ปดํฌ๋ํธ์ ์ ๋ฌํ๋ ์๋ก์ด ๋ฐฉ์์ ์ ๊ณตํจ.
์ด๋ฅผ ํตํด ์ด๋ค ์ปดํฌ๋ํธ๋ ์ง ๋ฐ์ดํฐ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ง์ฉ.
1) ์ปจํ ์คํธ๋ ์ธ์ ์ฌ์ฉํด์ผ ํ๋?
- ๊ธฐ์กด props ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ธฐ์กด ๋ฐฉ์์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๋ ์ปดํฌ๋ํธ๊น์ง์ ๊น์ด๊ฐ ๊ธธ์ด์ง์๋ก ๋ณต์กํด์ง.
๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ๊ณ์ํด์ ์์ฑํด์ผ ํ๊ธฐ๋๋ฌธ์ ๋นํจ์จ์ ์ด๊ณ , ์ง๊ด์ ์ด์ง๋ ์์!
์ด๋ด ๋ ์ปจํ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊นฐ๋ํ๊ฒ ๊ฐ์ ํ ์ ์์. ๐ช๐ป
1.
์ปจํ ์คํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋งค๋ฒ ์ปดํฌ๋ํธ๋ฅผ ํตํด ์ ๋ฌํ ํ์ ์์ด ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ก ๊ณง๋ฐ๋ก ์ ๋ฌํ๊ฒ ํด ์ค.
์๋ ์ฝ๋๋ React.createContext() ํจ์๋ฅผ ์ฌ์ฉํด์ ThemeContext ๋ผ๋ ์ด๋ฆ์ ์ปจํ ์คํธ๋ฅผ ํ๋ ์์ฑํ์.
ํ์ฌ ํ ๋ง๋ฅผ ์ํ ์ปจํ ์คํธ๊ฐ ์์ฑ๋๊ณ , ๊ธฐ๋ณธ๊ฐ์ 'red' ์.
const ThemeContext = React.createContext('red');
2.
Provider ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ์ปดํฌ๋ํธ๋ค์๊ฒ ํ์ฌ ํ ๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํจ.
๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๋ค์ ์ปดํฌ๋ํธ ํธ๋ฆฌ ํ๋จ์ ์ผ๋ง๋ ๊น์ด ์๋์ง์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์.
์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ์์ Provider ๋ก ๊ฐ์ธ ์ค์ผ ํ๋๋ฐ,
์๋ ์ฝ๋์์๋ ์ต์์ ์ปดํฌ๋ํธ์ธ App ์ปดํฌ๋ํธ๋ฅผ ThemeContext.Provider ๋ก ๊ฐ์ธ ์คฌ์.
์ด๋ ๊ฒ ํ๋ฉด Provider์ ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๊ฐ ์ผ๋ง๋ ๊น์ด ์์นํด ์๋์ง ๊ด๊ณ์์ด ์ปจํ ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์.
์๋ ์ฝ๋๋ ํ์ฌ ํ ๋ง ๊ฐ์ผ๋ก 'pink' ๋ฅผ ์ ๋ฌํ๊ณ ์์.
function App (props) {
return (
<ThemeContext.Provider value="pink">
<Toolbar />
</ThemeContext.Provider>
);
}
3.
์ด์ ์ค๊ฐ์ ์์นํ ์ปดํฌ๋ํธ๋ ํ ๋ง ๋ฐ์ดํฐ๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ ํ์๊ฐ ์์.
function Toolbar (props) {
return (
<div>
<ThemedButton />
</div>
)
}
4.
๋ฆฌ์กํธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ํ ๋ง Provider ๋ฅผ ์ฐพ์์ ํด๋น๋๋ ๊ฐ์ ์ฌ์ฉํ๋ค.
๋ง์ฝ ํด๋น๋๋ Provider ๊ฐ ์์ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ๊ฐ 'red' ๋ฅผ ์ฌ์ฉํ๋ค.
์๋ ์ฝ๋์์๋ ์์ Provider ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ํ ๋ง์ ๊ฐ์ 'pink' ๊ฐ ๋๋ ๊ฒ์.
function ThemedButton (props) {
return (
<ThemedContext.Consumer>
{value => <Button theme={value} />}
</ThemedContext.Consumer>
);
}
2) ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ณ ๋ คํ ์ ์?
- ์ปจํ ์คํธ๋ ๋ค๋ฅธ ๋ ๋ฒจ์ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ํน์ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๋ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉํจ.
ํ์ง๋ง, ๋ฌด์กฐ๊ฑด ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ ๊ฒ์ด ์๋~ ์๋! ์ปดํฌ๋ํธ์ ์ปจํ ์คํธ๊ฐ ์ฐ๋๋๋ฉด ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์.
๋ค๋ฅธ ๋ ๋ฒจ์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๋ ๊ฒ ์๋๋ฉด, ๊ธฐ์กด ์ฌ์ฉ ๋ฐฉ์๋๋ก props ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ปดํฌ๋ํธ ํฉ์ฑ ๋ฐฉ๋ฒ์ด ๋ ์ ํฉํ ๋๋ ์์.
//Page ์ปดํฌ๋ํธ๋ PageLayout ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํจ.
<Page user={user} avatarSize={avatarSize} />
//PageLayout ์ปดํฌ๋ํธ๋ NavigationBar ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
<PageLayout user={user} avatarSize={avatarSize} />
//NavigationBar ์ปดํฌ๋ํธ๋ Link ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
<NavigationBar user={user} avatarSize={avatarSize} />
//Link ์ปดํฌ๋ํธ๋ Avatar ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
<Link href={user.permalink}>
<Avatar user={user} size={avatarSize} />
</Link>
์์ ์ฝ๋์์๋ ์ฌ์ฉ์ ์ ๋ณด์, ์๋ฐํ ์ฌ์ด์ฆ๋ฅผ ๋ช ๋จ๊ณ์ ๊ฑธ์ณ ํ์ ์ปดํฌ๋ํธ์ธ Link ์ปดํฌ๋ํธ์ Avatar ๋ก ์ ๋ฌํ๋
Page ์ปดํฌ๋ํธ๊ฐ ์์.
๊ฐ์ฅ ํ์ ๋ ๋ฒจ์ธ Avatar ์ปดํฌ๋ํธ๊ฐ user ์ avatarSize ๋ฅผ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์, <<< ์ด๋ฅผ ์ํด ์ฌ๋ฌ ๋จ๊ณ์ ๊ฑธ์ณ์ props ๋ฅผ ํตํด user ์ avatarSize ๋ฅผ ์ ๋ฌํด ์ฃผ๊ณ ์๋ ๊ฒ์ธ๋ฐ.... ์ด ๊ณผ์ ์ ๊ต์ฅํ ๋ถํ์ํ๊ฒ ๋๊ปด์ง.
๋ํ Avatar ์ปดํฌ๋ํธ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๊ฐ ํ์ํด์ง๋ฉด ํด๋น ๋ฐ์ดํฐ๋ ์ถ๊ฐ๋ก ์ฌ๋ฌ ๋จ๊ณ์ ๊ฑธ์ณ ๋๊ฒจ ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๋ฒ๊ฑฐ๋ก์.
์ด๋, ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ Avatar ์ปดํฌ๋ํธ๋ฅผ ๋ณ์์ ์ ์ฅํ์ฌ ์ง์ ๋๊ฒจ ์ฃผ๋ ๊ฒ์.
function Page (props) {
const user = props.user;
const userLink = (
<Link href={user.permalink}>
<Avatar user={user} size={props.avatarSize} />
</Link>
);
//Page ์ปดํฌ๋ํธ๋ PageLayout ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
//์ด๋ props ๋ก userLink ๋ฅผ ํจ๊ป ์ ๋ฌํจ.
return <PageLayout userLink={userLink} />;
}
//PageLayout ์ปดํฌ๋ํธ๋ NavigationBar ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
<PageLayout userLink={...} />
//NavigationBar ์ปดํฌ๋ํธ๋ props ๋ก ์ ๋ฌ๋ฐ์ userLink element ๋ฅผ ๋ฆฌํด
<NavigationBar userLink={...} />
์ ์ฝ๋์์๋ user ์ avatarSize ๊ฐ props ๋ก ๋ค์ด๊ฐ Avatar ์ปดํฌ๋ํธ๋ฅผ userLink ๋ผ๋ ๋ณ์์ ์ ์ฅํ ๋ค์ ํด๋น ๋ณ์๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ก ๋๊ธฐ๊ณ ์์.
๊ฐ์ฅ ์์ ๋ ๋ฒจ์ ์๋ Page ์ปดํฌ๋ํธ๋ง Avatar ์ปดํฌ๋ํธ์์ ํ์๋ก ํ๋ user ์ avatarSize ์ ๋ํด ์๊ณ ์์ผ๋ฉด ๋จ.
์ด๋ฐ ๋ฐฉ์์ ์ค๊ฐ ๋ ๋ฒจ์ ์ปดํฌ๋ํธ๋ฅผ ํตํด ์ ๋ฌํด์ผ ํ๋ props ๋ฅผ ์์ ๊ณ , ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ ๋ง๋ค์ด ์ค.
๋ํ ์ต์์ ์ปดํฌ๋ํธ์๋ ๋ง์ ๊ถํ์ ๋ถ์ฌํ๊ฒ ๋จ.
๋ค๋ง, ๋ชจ๋ ์ํฉ์ ์ด ๋ฐฉ์์ด ์ข์ ๊ฒ์ ์๋๋๋ค~
๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์์ ์ปดํฌ๋ํธ์ ๋ชฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์์ ์ปดํฌ๋ํธ๋ ๋ณต์กํด์ง๊ณ , ํ์ ์ปดํฌ๋ํธ๋ ๋๋ฌด ์ ์ฐํด์ง๋๋ค.
function Page (props) {
const user = props.user;
const topBar = (
<NavigationBar>
<Link href={user.permalink}>
<Avatar user={user} size={props.avatarSize} />
</Link>
</NavigationBar>
);
const content = <Feed user={user} />
return (
<PageLayout
topBar={topBar}
content={content}
/>
);
}
์ ์ฝ๋์ ๋ฐฉ์์ ํ์ ์ปดํฌ๋ํธ์ ์์กด์ฑ์ ์์ ์ปดํฌ๋ํธ์ ๋ถ๋ฆฌํ ํ์๊ฐ ์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์ ์ ํ ๋ฐฉ๋ฒ์.
๋ ๋๋ง ์ ์ ํ์ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์ ํต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ render props ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์๋ ์์.
ํ์ง๋ง ์ด๋ ํ ๊ฒฝ์ฐ์๋ ํ๋์ ๋ฐ์ดํฐ์ ๋ค์ํ ๋ ๋ฒจ์ด ์๋ ์ค์ฒฉ๋ ์ปดํฌ๋ํธ๋ค์ ์ ๊ทผ์ด ํ์ํ ์ ์์.
์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๊ณ , ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํด์ผ ํจ.
์ปจํ ์คํธ๋ ํด๋น ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๋ค์๊ฒ broadcast(๋๋ฆฌ ์๋ ค ์ฃผ๋ ๊ฒ) ํด ์ค.
์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ๋ฐ์ดํฐ์ ๋ํ์ ์ธ ์๋ก ํ์ฌ ์ง์ญ ์ ๋ณด, ui ํ ๋ง, ๊ทธ๋ฆฌ๊ณ ์บ์ฑ๋ ๋ฐ์ดํฐ ๋ฑ์ด ์์.
3) ์ปจํ ์คํธ API
1. React.createContext
- ์ปจํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด์ React.createContext() ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํจ.
const MyContext = React.createContext(๊ธฐ๋ณธ๊ฐ);
์์ ๋ ๋ฒจ์ ๋งค์นญ๋๋ Provider ๊ฐ ์๋ค๋ฉด, ์ด ๊ฒฝ์ฐ์๋ง ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋จ.
๊ธฐ๋ณธ๊ฐ์ผ๋ก undefined ๋ฅผ ๋ฃ์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋์ง ์์.
2. Context.Provider
- Context.Provider ์ปดํฌ๋ํธ๋ก ํ์ ์ปดํฌ๋ํธ๋ค์ ๊ฐ์ธ์ฃผ๋ฉด ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๋ค์ด ํด๋น ์ปจํ ์คํธ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ๋จ.
<MyContext.Provider value={/* some value */}>
Provider ์ปดํฌ๋ํธ์๋ value ๋ผ๋ prop ์ด ์์ผ๋ฉฐ, ์ด๊ฒ์ Provider ์ปดํฌ๋ํธ ํ์์ ์๋ ์ปดํฌ๋ํธ๋ค์๊ฒ ์ ๋ฌ๋จ.
ํ์ ์ปดํฌ๋ํธ๋ค์ด ์ด ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ์ด๊ฒ์ consumer ์ปดํฌ๋ํธ ๋ผ๊ณ ๋ถ๋ฆ.
consumer ์ปดํฌ๋ํธ๋ ์ปจํ ์คํธ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์ฌ๋ ๋๋ง ๋จ!
์ฐธ๊ณ ๋ก, ํ๋์ Provider ์ปดํฌ๋ํธ๋ ์ฌ๋ฌ ๊ฐ์ consumer ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ๋ ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ๊ฐ์ Provider ์ปดํฌ๋ํธ๋ ์ค์ฒฉ๋์ด ์ฌ์ฉํ ์ ์์.
Provider ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ง ๋ชจ๋ consumer ์ปดํฌ๋ํธ๋ Provider ์ value prop ์ด ๋ฐ๋ ๋๋ง๋ค ์ฌ๋ ๋๋ง ๋จ.
๊ฐ์ด ๋ณ๊ฒฝ๋์์ ๋ ์์ ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ ๋์์ด ์๋๋๋ผ๋, ํ์์ ์๋ ์ปดํฌ๋ํธ๊ฐ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ์ ์ปดํฌ๋ํธ์์๋ ์ ๋ฐ์ดํธ๊ฐ ์ผ์ด๋จ.
3. Context.Consumer
consumer ์ปดํฌ๋ํธ๋ ์ปจํ ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ ํ๋ ์ปดํฌ๋ํธ์.
<MyContext.Consumer>
{value => /* ์ปจํ
์คํธ์ ๊ฐ์ ๋ฐ๋ผ์ ์ปดํฌ๋ํธ๋ค์ ๋ ๋๋ง */ }
</MyContext.Consumer>
์ปดํฌ๋ํธ์ ์์์ผ๋ก ํจ์๊ฐ ์ค๋ ๊ฒ์ function as a child ๋ผ๊ณ ํจ.
Context.Consumer ๋ก ๊ฐ์ธ์ฃผ๋ฉด ์์์ผ๋ก ๋ค์ด๊ฐ ํจ์๊ฐ ํ์ฌ ์ปจํ ์คํธ์ value ๋ฅผ ๋ฐ์์ ๋ฆฌ์กํธ ๋ ธ๋๋ก ๋ฆฌํดํ๊ฒ ๋จ.
ํจ์๋ก ์ ๋ฌ๋๋ value ๋ Provider ์ value prop ๊ณผ ๋์ผํจ.
๋ง์ฝ ์์ ์ปดํฌ๋ํธ์ Provider ๊ฐ ์๋ค๋ฉด ์ด value ํ๋ผ๋ฏธํฐ๋ createContext() ๋ฅผ ํธ์ถํ ๋ ๋ฃ๋ ๊ธฐ๋ณธ๊ฐ๊ณผ ๋์ผํ ์ญํ ์ ํจ.
4. Context.displayName
์ปจํ ์คํธ ๊ฐ์ฒด๋ displayName ์ด๋ผ๋ ๋ฌธ์์ด ์์ฑ์ ๊ฐ์ง.
๋ํ, ํฌ๋กฌ ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ๋๊ตฌ์์๋ ์ปจํ ์คํธ์ Provider ๋ Consumer ๋ฅผ ํ์ํ ๋,
์ด displayName ์ ํจ๊ป ํ์ํด ์ค.
const MyContext = React.createContext(/* some value */);
MyContext.displayName = 'MyDisplayName';
//๊ฐ๋ฐ์ ๋๊ตฌ์ "MyDisplayName.Provider" ๋ก ํ์๋จ
<MyCOntext.Provider>
//๊ฐ๋ฐ์ ๋๊ตฌ์ "MyDisplayName.Consumer" ๋ก ํ์๋จ
<MyContext.Consumer>
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด MyDisplayName ์ด ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ๋๊ตฌ์ ํ์๋จ.
5. useContext
ํจ์ ์ปดํฌ๋ํธ์์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ปดํฌ๋ํธ๋ฅผ ๋งค๋ฒ Consumer ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ฃผ๋ ๊ฒ๋ณด๋ค ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์.
๊ทธ๊ฒ์ ๋ฐ๋ก useContext() ํ ์ ๋๋ค.
ํ ์ ํจ์ ์ปดํฌ๋ํธ์์ ์ปจํ ์คํธ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด ์ค.
useContext() ํ ๊ณผ React.createContext() ํจ์ ํธ์ถ๋ก ์์ฑ๋ ์ปจํ ์คํธ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์์
ํ์ฌ ์ปจํ ์คํธ์ ๊ฐ์ ๋ฆฌํดํจ.
function MyComponent(props) {
const value = useContext(MyContext);
return (
...
);
}
useContext () ํ ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๋ฐฉ์๊ณผ ๋์ผํ๊ฒ ์ปดํฌ๋ํธ ํธ๋ฆฌ์์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ Provider ๋ก๋ถํฐ ์ปจํ ์คํธ์ ๊ฐ์ ๋ฐ์์ค๊ฒ ๋จ.
๋ง์ฝ ์ปจํ ์คํธ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฐ๊ณผ ํจ๊ป useContext() ํ ์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ ๋๋ง ๋จ.
๊ทธ๋ ๊ธฐ์ useContext() ํ ์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ด ๊ฝค ๋ฌด๊ฑฐ์ด ์์ ์ผ ๊ฒฝ์ฐ์๋ ๋ณ๋๋ก ์ต์ ํ ์์ ์ ํด ์ค ํ์๊ฐ ์์.
useContext() ํ ์ ์ฌ์ฉํ ๋์๋ ํ๋ผ๋ฏธํฐ๋ก ์ปจํ ์คํธ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด ์ค์ผ ํ๋ค๋ ๊ฒ์ ๊ผญ ๊ธฐ์ตํ์.
//์ฌ๋ฐ๋ฅธ ์ฌ์ฉ
useContext(MyContext);
//์๋ชป๋ ์ฌ์ฉ๋ฒ
useContext(MyContext.Consumer);
useContext(MyContext.Provider);
์ ์ฝ๋์ฒ๋ผ Consumer๋ Provider ๋ฅผ ๋ฃ์ผ๋ฉด ์ ๋จ!!!
'React ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
function as a child (0) | 2022.12.07 |
---|---|
Provider value ์์ ์ฃผ์ํด์ผ ํ ์ฌํญ (0) | 2022.12.05 |
๋ฆฌ์กํธ์ ํฉ์ฑ๊ณผ ์์ (0) | 2022.12.03 |
State ๋์ด์ฌ๋ฆฌ๊ธฐ (0) | 2022.12.01 |
๋ฆฌ์กํธ์ ํผ (0) | 2022.11.30 |