ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ useContext๋ ๋ฌด์์ผ๊น?
**useContext**๋ React ์ปดํฌ๋ํธ๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๊ฒ ๋์์ฃผ๋ ๋๊ตฌ์์.
React์์๋ **"์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ"**ํ ๋ props๋ฅผ ์ฌ์ฉํ์ฃ .
๊ทธ๋ฐ๋ฐ ์ปดํฌ๋ํธ๊ฐ ๋ง์์ง๋ฉด ๋ฐ์ดํฐ ์ ๋ฌ์ด ์ ์ ๊ท์ฐฎ์์ ธ์.
๋ง์น ๋ฆด๋ ์ด ๊ฒฝ์ฃผ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋๊ฒจ์ค์ผ ํ๋๊น์!
useContext๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค ํ์ ์์ด ๋ฐ๋ก ์ํ๋ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ด์.
๐ ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ ์ด์ผ๊ธฐ๋ก ์ดํดํด๋ณด์
์ฌ๋ฌ๋ถ์ด ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ๋ฅผ ์ด์ํ๋ค๊ณ ์๊ฐํด ๋ณด์ธ์. ๐
์ด๋ฒ์ **ํ๋ฒ๊ฑฐ์ "์์ค"**๋ฅผ ์๋ก ๋ค์ด ๋ณผ๊ฒ์!
1. props๋ก ์ ๋ฌํ๋ ๊ฒฝ์ฐ (๋ถํธํ ์ํฉ)
์์ ์ปดํฌ๋ํธ(์ฃผ๋ฐฉ)์์ ์์ค ์ ๋ณด๋ฅผ ํ์ ์ปดํฌ๋ํธ(ํ ์ด๋ธ)์ ์ ๋ฌํด์ผ ํ๋ค๊ณ ์์ํด ๋ด ์๋ค.
- ์ฃผ๋ฐฉ → ํ ๋งค๋์ → ์๋น ์ง์ → ํ ์ด๋ธ ์๋
- ๋ฐ์ดํฐ(์์ค)๋ฅผ ๊ณ์ ๋ฆด๋ ์ด๋ก ๋๊ฒจ์ผ ํด์. ๋๋ฌด ๋ฒ๊ฑฐ๋กญ์ฃ ?
์ฝ๋๋ก ๋ณด๋ฉด ์ด๋ ๊ฒ ๋ฉ๋๋ค:
function Kitchen() {
const sauce = "์น์ฆ ์์ค";
return <Manager sauce={sauce} />;
}
function Manager({ sauce }) {
return <Server sauce={sauce} />;
}
function Server({ sauce }) {
return <Table sauce={sauce} />;
}
function Table({ sauce }) {
return <p>ํ
์ด๋ธ์ ์ ๊ณต๋ ์์ค: {sauce}</p>;
}
์ฌ๊ธฐ์ ๋ฌธ์ ์ !
- ์์ค๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋ชจ๋ ์ค๊ฐ ๋จ๊ณ ์ปดํฌ๋ํธ์์ props๋ฅผ ๋๊ฒจ์ค์ผ ํด์.
- ์ค๊ฐ ๋จ๊ณ๊ฐ ๋ง์์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ ธ์.
2. useContext๋ฅผ ์ฌ์ฉํ๋ฉด? (๊ฐํธํ ์ํฉ)
useContext๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๊ฐ ๋จ๊ณ ์์ด ๋ฐ๋ก **ํ์ํ ๊ณณ์ ๋ฐ์ดํฐ(์์ค)**๋ฅผ ์ ๋ฌํ ์ ์์ด์.
์ง์ ํ
์ด๋ธ์ ์์ค๋ฅผ ๊ฐ์ ธ๋ค์ฃผ๋ ๋๋์ด์ฃ !
๐ ๏ธ useContext ์ฝ๋ ์์
import React, { createContext, useContext } from 'react';
// ์์ค๋ฅผ ์ ์ฅํ Context๋ฅผ ๋ง๋ค์ด์
const SauceContext = createContext();
function Kitchen() {
const sauce = "์น์ฆ ์์ค"; // ์ฃผ๋ฐฉ์์ ๋ง๋ ์์ค
return (
// SauceContext์ ์์ค๋ฅผ ์ ๊ณตํด์
<SauceContext.Provider value={sauce}>
<Table />
</SauceContext.Provider>
);
}
function Table() {
// useContext๋ฅผ ์ฌ์ฉํด์ ์์ค๋ฅผ ๊ฐ์ ธ์์
const sauce = useContext(SauceContext);
return <p>ํ
์ด๋ธ์ ์ ๊ณต๋ ์์ค: {sauce}</p>;
}
export default Kitchen;
๐ ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น?
- createContext():
- SauceContext๋ผ๋ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋ง๋ค์ด์.
์ฌ๊ธฐ์ "์์ค ์ ๋ณด"๋ฅผ ๊ด๋ฆฌํด์.
- SauceContext๋ผ๋ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋ง๋ค์ด์.
- SauceContext.Provider:
- Provider๋ ์์ค๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํด์.
- <SauceContext.Provider value={sauce}>์์ value์ ์์ค๋ฅผ ๋ฃ์ด์ฃผ์ฃ .
- useContext(SauceContext):
- useContext๋ฅผ ์ฌ์ฉํ๋ฉด Context์ ์ ์ฅ๋ ์์ค๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์์ด์.
- ์ค๊ฐ ๋จ๊ณ ์์ด ๋ฐ๋ก ์ ๊ทผํ๋๊น ์ฝ๋๊ฐ ๊น๋ํ์ฃ !
๐ ์ดํด๋ฅผ ๋๋ ๋น์
useContext๋ ๋ง์น **"๊ณต์ฉ ๋์ฅ๊ณ "**์ ๊ฐ์์.
- ์ฃผ๋ฐฉ(์์ ์ปดํฌ๋ํธ)์ด ๋์ฅ๊ณ (Context)์ ์์ค๋ฅผ ๋ฃ์ด๋ก๋๋ค.
- ํ ์ด๋ธ(ํ์ ์ปดํฌ๋ํธ)์ ์ด ๋์ฅ๊ณ ์์ ํ์ํ ์์ค๋ฅผ ๊บผ๋ด ์ฐ๋ฉด ๋ผ์.
**์ค๊ฐ์ ์ ๋ฌํ๋ ์ฌ๋(๋งค๋์ , ์๋น ์ง์)**์ด ํ์ ์์ด์!
๐ ํ ์ค ์์ฝ
useContext๋ ๋ฐ์ดํฐ๋ฅผ ์ค๊ฐ ๋จ๊ณ ์์ด ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์์.
'web > react hook' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
useEffect (1) | 2024.12.14 |
---|---|
useDeferredValue (0) | 2024.12.14 |
useDebugValue (0) | 2024.12.14 |
useCallback (0) | 2024.12.14 |
useActionState (1) | 2024.12.14 |
- Total
- Today
- Yesterday
- component
- ๋ฒ ํ
- Nextjs
- flushsync
- prefetchdns
- react hook
- experimental_taintuniquevalue
- react dom
- react dom hook
- ์ํ๊ด๋ฆฌ
- finddomnode
- useformstatus
- react
- useid
- Store
- state
- preconnect
- usedeferredvalue
- Props
- useinsertioneffect
- dns-prefetch
- ๋ฐ์ดํฐ์ ์ง
- ์ ์ฅ์
- useRef
- ์ต์ ๋ฐ์ดํฐ
- ์ธ๋ถํฐํธ
- experimental_taintobjectreference
- ์คํ์
- experimental
- zustand
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |