๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปWEB FrontEnd/ํ”„๋ ˆ์ž„์›Œํฌ React

props : ๋ถ€๋ชจ -> ์ž์‹ state ์ „์†ก

1. props๋กœ ๋ถ€๋ชจ -> ์ž์‹ state ์ „์†กํ•˜๋Š” ๋ฒ• 

  1. ์ž์‹์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์— ๊ฐ€์„œ <์ž์‹์ปดํฌ๋„ŒํŠธ ์ž‘๋ช…={state์ด๋ฆ„} /> 
  2. ์ž์‹์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” function์œผ๋กœ ๊ฐ€์„œ props๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ๋ก ํ›„ props.์ž‘๋ช… ์‚ฌ์šฉ

 

 

์ฐธ๊ณ . 

1) props๋Š” <Modal ์ด๋Ÿฐ๊ฑฐ={์ด๋Ÿฐ๊ฑฐ}  ์ €๋Ÿฐ๊ฑฐ={์ €๋Ÿฐ๊ฑฐ}> ์ด๋ ‡๊ฒŒ 10๊ฐœ 100๊ฐœ 1000๊ฐœ ๋ฌดํ•œํžˆ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

2) ๊ผญ state๋งŒ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š”๊ฑด ์•„๋‹ˆ๋‹ค.

<Modal ๊ธ€์ œ๋ชฉ={๋ณ€์ˆ˜๋ช…}> ์ผ๋ฐ˜ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์ „์†ก๋„ ๊ฐ€๋Šฅํ•˜๊ณ  

<Modal ๊ธ€์ œ๋ชฉ="๊ฐ•๋‚จ์šฐ๋™๋ง›์ง‘"> ์ผ๋ฐ˜ ๋ฌธ์ž์ „์†ก์€ ์ค‘๊ด„ํ˜ธ ์—†์ด ์ด๋ ‡๊ฒŒ ํ•ด๋„ ๋œ๋‹ค.

3) ๋ถ€๋ชจ -> ์ž์‹ ์™ธ ๋‹ค๋ฅธ ๊ด€๊ณ„์—์„œ๋Š” state ์ „์†ก์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค!

 

 

ex. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ state(๊ธ€์ œ๋ชฉ)๋ฅผ ์ž์‹ ์ปดํฌ๋„ŒํŠธ <Modal>์— ์ „์†ก

function App (){
  let [๊ธ€์ œ๋ชฉ, ๊ธ€์ œ๋ชฉ๋ณ€๊ฒฝ] = useState(['๋‚จ์ž์ฝ”ํŠธ ์ถ”์ฒœ', '๊ฐ•๋‚จ ์šฐ๋™๋ง›์ง‘', 'ํŒŒ์ด์ฌ๋…ํ•™']);
  return (
    <div>
      <Modal ๊ธ€์ œ๋ชฉ={๊ธ€์ œ๋ชฉ}></Modal>
    </div>
  )
}

function Modal(props){
  return (
    <div className="modal">
      <h4>{ props.๊ธ€์ œ๋ชฉ[0] }</h4>
      <p>๋‚ ์งœ</p>
      <p>์ƒ์„ธ๋‚ด์šฉ</p>
    </div>
  )
}

 

 

2. Context API

Context API๋ฅผ ์“ฐ๋ฉด props ์ „์†ก์—†์ด state ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ ๋‹จ์ ๋“ค ๋•Œ๋ฌธ์— ๋งŽ์ด ์“ฐ์ง„ ์•Š๊ณ , redux ๊ฐ™์€ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

  1. state ๋ณ€๊ฒฝ์‹œ ์“ธ๋ฐ์—†๋Š” ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ „๋ถ€ ์žฌ๋ Œ๋”๋ง์ด ๋˜๊ณ 
  2. useContext() ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ๋‚˜์ค‘์— ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์žฌ์‚ฌ์šฉํ•  ๋•Œ Context๋ฅผ import ํ•˜๋Š”๊ฒŒ ๊ท€์ฐฎ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

Context API ์‚ฌ์šฉ๋ฒ•

(App.js)

export let Context1 = React.createContext();  

function App(){
  let [์žฌ๊ณ , ์žฌ๊ณ ๋ณ€๊ฒฝ] = useState([10,11,12]);

  return (
    <Context1.Provider value={ {์žฌ๊ณ , shoes} }>
      <Detail shoes={shoes}/>
    </Context1.Provider>
    
  )
}
(Detail.js)

import {useState, useEffect, useContext} from 'react';
import {Context1} from './../App.js';

function Detail(){
  let {์žฌ๊ณ } = useContext(Context1)

  return (
    <div>{์žฌ๊ณ }</div>
  )
}