ํฐ์คํ ๋ฆฌ ๋ทฐ
useContext
๐Prop drilling
- props์ ์ ๋ฌ์ด ๋๋ฌด ๊น์ด์ง๋ฉด ๋ฐ์ํ๋ ํ์
- ๋ฌธ์ ์ : ๋๋ฌด ๊น์ด์ง๋ฉด prop์ด ์ด๋ค ์ปดํฌ๋ํธ๋ก๋ถํฐ ์๋์ง ํ์ ์ด ํ๋ฌ, ์ค๋ฅ ๋ฐ์ ์ ์ถ์ ์ด ํ๋ฌ
๐์ ์ญ ์ํ ๊ด๋ฆฌ(react context API)
- ํ์ ๊ฐ๋
- createContext : context ์์ฑ
- Provider : context๋ฅผ ํ์ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌ
- useContext : context๋ฅผ ๊ตฌ๋ ํ๊ณ ํด๋น context์ ํ์ฌ ๊ฐ์ ์ฝ์

๐useContext ์ ์ฉ๋ฒ
[App.jsx ํ์ผ ๋ด์ ์ ์ฉ ์]
- context ํด๋ > js ํ์ผ(= context ํ์ผ / ๋ด๋ถ์ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋์ผํ context๋ฅผ ์ ์ง)
- js ํ์ผ ๋ด์์ creatContext(์ด๊ธฐ ๊ฐ(null))์ ๋ณ์์ ํ ๋น, export
- ์ ์ญ์ ์ํ๋ฅผ ๊ด๋ฆฌํ ํ์ผ์ import
- ๋งฅ๋ฝ์ ์ ์งํ ์ปดํฌ๋ํธ ์ ์๋๋ก <(context ๋ช ).Provider> </(context ๋ช ).Provider> ๊ฐ์ธ๊ธฐ
- ์ปดํฌ๋ํธ์ value ์ ๋ ฅ(์ด๊ธฐ๊ฐ์ด value๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋จ) : value={{ props }}
- ์ฌ์ด์ ๋ ์ปดํฌ๋ํธ์ prop drilling ์ง์ฐ๊ธฐ
- ํ์ ํด๋์์ props ๊บผ๋ด์ฐ๊ธฐ: useContext ํ์ฉ & import => {props} = useContext(context ๋ช );
[Context ํ์ผ ๋ฐ๋ก ์์ฑ ์]
prop drilling ์ง์ฐ๊ธฐ (ํ์์๋ก ๋ฌ๋ ๊ด์ฐฎ์)๐๐ป9-1 ์์ ์คํ- context ํด๋ > jsx ํ์ผ (html ์์ return)
- Provider ๋ง๋ค๊ธฐ (ํจ์ ํ์)
3-1. Provider๋ ํ์ ์์๋ค์ ๋ฌถ์ด์ ์ฃผ์ ํ๊ธฐ ๋๋ฌธ์ props๋ก {children}์ ๋ฐ์ - createContext() ๋ก context ๋ง๋ค๊ธฐ
- Provider ํจ์์ return ๋ฌธ์ ์ฃผ์
ํ ํํ ๋ง๋ค๊ธฐ
๐๐ป return ( <(context ๋ช ).Provider> {children} </(context ๋ช ).Provider> ) - export Provider
- App.jsx (์ต์์ ํ์ผ)์์ Provider ๊ฐ์ธ๊ธฐ
- Provider ๋ด์์ ํ์ํ value ์ฃผ์ ํ๊ธฐ
- ์ฌ์ฉํ๋ ๊ณณ์์ useContext()
9-1. props ๊ตฌ์กฐ๋ถํดํ ๋น
[Context]
//OlympicContext.jsx
import { createContext } from "react";
export const OlympicContext = createContext(); //export ํ์!
export function OlympicProvider({ children }) { //export ํ์!
return (
<OlympicContext.Provider
value={
(sortType,
... //์๋ต
removeNation)
}
>
{children}
</OlympicContext.Provider>
);
}
[App]
// App.jsx์ return
return (
<OlympicProvider>
<Radio />
<Header />
<List />
</OlympicProvider>
);
[Context ์ฌ์ฉ ์ปดํฌ๋ํธ]
// Radio.jsx
const Radio = () => {
const { sortType, setSortType } = useContext(OlympicContext);
return ();
// Header.jsx
export const Header = () => {
const { nation, setNation, addNewItem, upDate } = useContext(OlympicContext);
return ();
// List.jsx
const List = () => {
const { nationList, removeNation } = useContext(OlympicContext);
return ();
๐์ฃผ์์ฌํญ
- provider์ value์ ๊ฐ์ด ๋ฌ๋ผ์ง์ง ์๋๋ก!!!!
(ํ์ ์ปดํฌ๋ํธ์ ๋ชจ๋ ๊ฐ์ด ๋ฌ๋ผ์ง)
'Language > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [โ๏ธ] custom hook (0) | 2025.01.30 |
|---|---|
| [โ๏ธ] memoization (0) | 2025.01.30 |
| [โ๏ธ] useEffect, useRef (0) | 2025.01.30 |
| [โ๏ธ] useState : ํจ์ํ ์ ๋ฐ์ดํธ (0) | 2025.01.30 |
| [โ๏ธ] CSS in JS(Styled-components, GlobalStyles (1) | 2025.01.27 |