[WIL]Context API
Context API ๋ ?
Context ?
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ์ ์ด๋ ํ ๊ฐ์ ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก ์ฃผ๋ก ์ ์ญ์ ์ผ๋ก ํ์ํ ๊ฐ์ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ค. ์ฝ๊ฒ ๋งํ๋ฉด
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ Props๊ฐ ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ปดํฌ๋ํธ๊ฐ์ ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฌ์ฉํ๋ ์ด์
์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ฃผ์ด์ผ ํ ๋ Props๋ฅผ ํตํด ์ ๋ฌํ๋๋ฐ, ๊น์ํ ์์นํ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์ณ ์ฐ๋ฌ์ Props๋ฅผ ์ค์ ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๊ณ ์ ์ฌ์ฉํ๋ค. *Props Drilling ๋ฌธ์
์ฌ์ฉ ๋ฐฉ๋ฒ
createContext ๋ผ๋ ํจ์๋ฅผ ๋ถ๋ฌ์์ ๋ง๋ค ์ ์๋ค.
import { createContext } from 'react';
const MyContext = createContext();
Context ๊ฐ์ฒด ์์ Provider๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ปดํฌ๋ํธ๊ฐ์ ๊ณต์ ํ๊ณ ์ ํ๋ value๋ผ๋ props๋ก ์ค์ ํ๋ฉด ์์ ์ปดํฌ๋ํธ๋ค์๊ฒ ํด๋น ๊ฐ์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
return (
<myContext.Provider value={value} >
{props.children}
</myContext.Provider >
)
์ด๋ ๊ฒ ํ๋ฉด ์ํ๋ ์ปดํฌ๋ํธ์์ useContext ๋ผ๋ Hook์ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค. ํด๋น Hook์ ์ธ์์๋ createContext๋ก ๋ง๋ Mycontext๋ฅผ ๋ฃ๋๋ค.
export const useMyContext = () => {
return useContext(myContext);
};
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ Props๋ฅผ ์ง์ด์ค๋ค !
export const Context = (props) => {
const [timerMessage, setTimerMessage] = React.useState(false)
const [btnOpen, setBtnOpen] = React.useState(false);
const btnClickOff = () => setBtnOpen(false);
const btnClickOn = () => setBtnOpen(!btnOpen);
const [tabNum, setTabNum] = React.useState(0);
}
๐ฏ์ถ์ฒ
https://velog.io/@velopert/react-context-tutorial
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ ์๋ ค์ฃผ๋ ๋ฆฌ์กํธ์์ Context API ์ ์ฐ๋ ๋ฐฉ๋ฒ
์ฌ๋ฌ๋ถ, ๋ฆฌ์กํธ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ฉด์ Context API๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ๊ณ์ ๊ฐ์? ๊ณผ๊ฑฐ์๋ ๊ด๋ จ ํฌ์คํธ๋ฅผ ์์ฑํ์ ์ด ์๊ธด ํ์ง๋ง, ์ง๋ ๋ช ๋ ๊ฐ Context๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ต๋ํ๊ฒ๋ ํ๋ค์
velog.io