๐Ÿ“

16. Hook - useContext

Context API์—์„œ Context.consumer๋กœ ์ „๋‹ฌํ•˜๋˜ ๋ฐฉ์‹์„ Hooks์˜ useContext๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋” ํŽธํ•˜๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์— ์žˆ์—ˆ๋˜ ์ฝ”๋“œ๋ฅผ ์ฃผ์„์ฒ˜๋ฆฌ ํ•˜์˜€์œผ๋‹ˆ ๋น„๊ตํ•ด๋ณด์„ธ์š”.

useContext ์ ์šฉํ•˜๊ธฐ

import { useContext, createContext } from "react"; const UserInfo = createContext({ name: "gary", id: "garyIsFree" }); const App = () => { return ( <HelloLicat/> ); }; // const HelloLicat = () => { // return ( // <UserInfo.Consumer> // {(value) => ( // <div> // <input type="text" /> // <h2>{value.name}</h2> // <strong>{`@ ${value.id}`}</strong> // </div> // )} // </UserInfo.Consumer> // ); // }; const HelloLicat = () => { const { name, id } = useContext(UserInfo); return ( <div> <h2>{name}</h2> <strong>{id}</strong> </div> ); }; export default App;
App.js

useContext ์ž์† ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•˜๊ธฐ

import { useContext, createContext } from "react"; const UserInfo = createContext({ name: "gary", id: "garyIsFree" }); const App = () => { return ( <HelloLicat/> ); }; // const HelloLicat = () => { // return ( // <UserInfo.Consumer> // {(value) => ( // <div> // <input type="text" /> // <h2>{value.name}</h2> // <strong>{`@ ${value.id}`}</strong> // </div> // )} // </UserInfo.Consumer> // ); // }; const HelloLicat = () => { const { name, id } = useContext(UserInfo); return ( <div> <h2>{name}</h2> <strong>{id}</strong> <HelloLicatTwo/> </div> ); }; const HelloLicatTwo = () => { const { name, id } = useContext(UserInfo); return ( <div> <h2>{name}</h2> <strong>{id}</strong> </div> ); }; export default App;
ํ•˜์ง€๋งŒ Hooks์˜ useContext๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
Context๋Š” props๊ฐ€ ์•„๋‹Œ ์ „์—ญ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ(๋ถ€๋ชจ โ†’ ์ž์‹) ํ๋ฆ„์˜ ์ „๋‹ฌ ์—†์ด๋„ ํŽธํ•˜๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด์„œ props๋กœ ์ „๋‹ฌํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ props๋กœ์˜ ์ „๋‹ฌ๋กœ ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Context๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ์œผ๋กœ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ย 

ย 
๋ฆฌ๋•์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋น„์Šทํ•œ๋ฐ์š”. ์ฝ์–ด๋ณผ๋งŒํ•œ ๊ธ€์— 2๊ฐœ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•œ ์•„ํ‹ฐํด์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค. (์•„์ง ๋ฆฌ๋•์Šค๋ฅผ ๋ฐฐ์šฐ์ง€ ์•Š์•„์„œ ์ฐจ์ด๋Š” ๋ฆฌ๋•์Šค ๊ฐ€์„œ ๋ง์”€๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)
ย