Hoon2 2022. 10. 13. 23:17
728x90

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

 

728x90