๐ ๋ชฉ์ฐจ
- Introduction
- context api
- Conclusion
๐ Introduction
์๋ ํ์ธ์. ์ค๋์ context api๋ฅผ ์ฌ์ฉํด์ ์ ์ญ์์ ์ํ ๊ฐ์ ๊ด๋ฆฌํ๋ ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ context api
context api๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์์ ๋๊ฐ์ง hook์ ์์ผํฉ๋๋ค.
- createContext
- useContext
์ ๋๋ค.
createContext๋ ๋ง๊ทธ๋๋ก context๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
const MyContext = createContext("defaultValue");
์ฒซ๋ฒ์งธ ์ธ์๋ก ์ด๊ธฐ ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
useContext๋ createContext๋ก ๋ง๋ ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
const text = useContext(MyContext);
๊ทธ๋ผ ์ด์ ๊ฐ๋จํ ์ ์ญ์ผ๋ก ๋ง๋ context api๋ฅผ ํ๋ฒ ๋ณผ๊น์?
import React, { createContext, useContext, useState } from "react";
const MyContext = createContext("defaultValue");
function Child() {
// context๋ฅผ ์ฌ์ฉํ๊ฒ ๋์.
const text = useContext(MyContext);
return <div>HI? {text}</div>;
}
function Parent() {
return <Child />;
}
function GrandParent() {
return <Parent />;
}
function ContextSample() {
const [value, setValue] = useState(true);
const onClick = () => {
setValue(!value);
};
return (
// โญ๏ธ ๋ฐ๋ก ์ด๋ถ๋ถ์์ ์ ์ญ value ๊ฐ์ ์ ๋ฌ์ ํด์ค ์ ์์ต๋๋ค.
<MyContext.Provider value={value ? "GOOD" : "BAD"}>
<GrandParent text="GOOD" />
<button onClick={onClick}>CLICK</button>
</MyContext.Provider>
);
}
export default ContextSample;
๐ Conclusion
์ด๋ ๊ฒ ํ๋ฒ context api์ ๋ํด์ ์์๋ณด์์ต๋๋ค. context api๋ก๋ ๋ณต์กํ์ง ์์ app์ redux๋ฅผ ์ฐ์ง ์๊ณ ๋ ๊ตฌํ์ ํ๋ค๊ณ ํ๋ค์. ๊ทธ๋งํผ ๋ง์ด ๊ฐ๋ ฅํ๊ธฐ๋ ํ์ง๋ง ๋๊ฐ์ง ๋์์ด ์๋ค๋ ๊ฒ์ด vuex์ ๋นํด ์์ฝ์ต๋๋ค. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์ ์๋ ~
'React Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React - custom hook (0) | 2020.12.13 |
---|---|
React - useReducer (0) | 2020.12.13 |
React - React.memo (0) | 2020.12.07 |
React - useCallback (0) | 2020.12.07 |
React - useMemo (0) | 2020.12.06 |