context
, ์ ์ญ ์ํ๋ฅผ ์ ๊ณตํ๋ Provider
, ๊ทธ๋ฆฌ๊ณ ์ ์ญ ์ํ๋ฅผ ๋ฐ์ ์ฌ์ฉํ๋ Consumer
๋ก ๋๋์ด์ ธ ์๋ค.โ ์ค์ฒฉ๋ ์ปดํฌ๋ํธ๊ฐ ๋ช ๊ฐ ์์ผ๋ฉด props๊ฐ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ค.
๐ Context API ์ฌ์ฉ ๋ฐฉ๋ฒ
1) import ํด์ฃผ๊ธฐ โก hook์ ์ง์ ํด์ค๋ค
import React, { useContext } from 'react';
2) Context ๋ง๋ค๊ธฐ โก import์ function์ ์ธ ์ฌ์ด์
React.createContext()
๋ฅผ ์ ์ฅํ์ฌ exportํด์ค๋ค
export let ๋ฒ์context = React.createContext();
โ ๊ฐ์ ๋ณ์๊ฐ์ ๊ณต์ ํ ๋ฒ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ง๋ค์ด ์ฃผ๋ ๊ฒ.3) Provider ๋ง๋ค๊ธฐ โก ๊ฐ์ ๊ฐ์ ๊ณต์ ํ HTML์
Provider
๋ก ๊ฐ์ธ์ฃผ๊ธฐ
<๋ฒ์context.Provider>
๊ฐ์ ๊ณต์ ํ๋ ค๋ HTML ํ๊ทธ๋ค</๋ฒ์context.Provider>
โ ๊ฐ์ ๋ณ์๊ฐ์ ๊ณต์ ํ ๋ฒ์๋ฅผ ์ง์ ํ๊ธฐ ์ํด ๊ฐ์ธ์ฃผ๋ ๊ฒ.4) value ์ง์ โก Provider ํ๊ทธ ์์ ๊ณต์ ๋ฅผ ์ํ๋ ๊ฐ์ ์ง์ ํด์ค๋ค
<๋ฒ์context.Provider value={๊ณต์ ํ๊ธธ ์ํ๋ state๊ฐ}>
โ ๊ณต์ ํ๊ณ ์ถ์ state๊ฐ์ ๋ด๊ธฐ ์ํด ์ง์ ํด์ฃผ๋ ๊ฒ.5) (๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ)
useContext(๋ฒ์์ด๋ฆ)
๋ก ๊ณต์ ๋ ๊ฐ ์ฌ์ฉํ๊ธฐ
let ๋ณ์์ง์ = useContext(๋ฒ์context)
โ useContext()์์ ์์์์ ๊ณต์ ๋ฒ์๋ฅผ ์ง์ ํ ๋ณ์๋ช ์ ๋ด๋๋ค.
๐ป useContext๋ฅผ ์ฌ์ฉํด์ state๊ฐ ๊ณต์ ์์
// App.js import React, { useState, useContext } from 'react'; // import ํด์ค๋ค import Product from './component/Product'; export let ์ฌ๊ณ context = React.createContext(); // ๋ณ์์ ๋ด์์ export ํด์ค๋ค function App() { let [์ฌ๊ณ , ์ฌ๊ณ ๋ณ๊ฒฝํจ์] = useState([10, 11, 12]) return ( <์ฌ๊ณ context.Provider value={์ฌ๊ณ }> // ์ฌ๊ณ state ๊ณต์ ๋ฅผ ์ํ๋ html ๋ฒ์๋ฅผ ๊ฐ์ธ์ค๋ค <div className="row"> { shoes.map((a,i) => { return ( <Product shoes={shoes[i] key=[i]} /> ) }) } </div> </์ฌ๊ณ context.Provider> ) } // Product.js import React, { useState} from 'react'; import Lest from './Lest.js'; function Product(props) { return ( <div> <h4> {props.shoes.title} </h4> <p> {props.shoes.content} & {props.shoes.price} </p> <Lest /> </div> ) } โ ์์ ์ปดํฌ๋ํธ(App.js)์์ ์ค๊ฐ ์ปดํฌ๋ํธ(Product.js)๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ํ์ ์ปดํฌ๋ํธ(Lest.js)๋ก ๋์ด๊ฐ ์ ์๋ค. ์ฆ, ์์ ์ปดํฌ๋ํธ์์ React.createContext๋ก ๋ฒ์๋ฅผ ์ค์ ํด ๋์ผ๋ฉด, ํด๋น ๋ฒ์๋ฅผ ๊ณต์ ํ ์ปดํฌ๋ํธ๋ก ๋ฐ๋ก ๊ฐ์ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. // Lest.js import React, { useState, useContext } from 'react'; import { ์ฌ๊ณ context } from './App.js'; // ์์ ์ปดํฌ๋ํธ์์ importํด์จ๋ค function Lest() { let lest = useContext(์ฌ๊ณ context); // ๊ณต์ ๋ฒ์๋ฅผ ์ง์ ํ ๋ณ์๋ช (์ฌ๊ณ context)์ ๋ด์์ ๊ฐ์ ธ๋ค์ด๋ค return ( <p> ์ฌ๊ณ : {lest} </p> ) }