본문 바로가기

React

[React] Props

[Props]

 

Dice 컴포넌트의 color 속성을 blue 로 지정해보면,

import Dice from "./Dice";

function App() {
    return (
    <div>
        <Dice color="blue" />
    </div>
    );
}

export default App;

 

다음처럼 개발자 도구 Element 에서 color = "blue" 의 흔적을 찾아볼 수가 없다. 이는 HTML 로 만들어진 속성이 아니기 때문인데,

 

개발자 도구의 component 에서 속성값을 확인하면,

 

이처럼 color = "blue" 의 props 를 확인할 수 있는데, 리액트에서는 component 에 지정한 속성을 props 라고 한다.

props는 component 에 지정된 모든 속성을 가르키는데, 따라서 각각의 속성은 prop 이라고한다.

 


[component prop 사용하기]

 

component prop 에 지정된 속성은 하나의 객체 형태로 첫번째 파라미터로 전달된다.

import diceBlue01 from './assets/dice-blue-1.svg';

function Dice(props) {
    console.log(props);
    return <img src={diceBlue01} alt="주사위" />;
}

export default Dice;

이처럼 Dice 함수의 첫번째 파라미터로 prop 값이 전달되는데,

 

콘솔에 출력된 객체를 확인하면 color : 'blue' prop 을 확인할 수 있음.

 


[색깔 prop 에 따른 이미지 할당]

 

import diceBlue01 from './assets/dice-blue-1.svg';
import diceRed01 from './assets/dice-red-1.svg';

function Dice(props) {
    const diceImg = props.color === 'red' ? diceRed01 : diceBlue01;
    // props 의 color 가 red 이면 빨간주사위, 아니면 파란주사위 할당
    return <img src={diceImg} alt="주사위" />;
}

export default Dice;

위처럼 코드를 작성하면 지정한 색깔 prop 에 따라서 이미지를 할당할 수 있는데,

 

import Dice from "./Dice";

function App() {
    return (
    <div>
        <Dice color="red" />
    </div>
    );
}

export default App;

지정한 color ="red" prop 에 따라 주사위 색이 변경됨.

 

 

다음과 같이 파란 주사위 6개, 빨간 주사위 6개 의 값을 입력한 후

import diceBlue01 from './assets/dice-blue-1.svg';
import diceBlue02 from './assets/dice-blue-2.svg';
import diceBlue03 from './assets/dice-blue-3.svg';
import diceBlue04 from './assets/dice-blue-4.svg';
import diceBlue05 from './assets/dice-blue-5.svg';
import diceBlue06 from './assets/dice-blue-6.svg';
import diceRed01 from './assets/dice-red-1.svg';
import diceRed02 from './assets/dice-red-2.svg';
import diceRed03 from './assets/dice-red-3.svg';
import diceRed04 from './assets/dice-red-4.svg';
import diceRed05 from './assets/dice-red-5.svg';
import diceRed06 from './assets/dice-red-6.svg';

const DICE_IMAGES = {
    blue: [diceBlue01, diceBlue02, diceBlue03, diceBlue04, diceBlue05, diceBlue06],
    red: [diceRed01, diceRed02, diceRed03, diceRed04, diceRed05, diceRed06],
}

function Dice(props) {
    const src = DICE_IMAGES[props.color][props.num - 1]
    const alt = `${props.color} ${props.num}`
    return <img src={src} alt={alt} />;
}

/* 위의 코드를 간결하게 표현한 것

function Dice({color = "blue", num = 1}) {
    const src = DICE_IMAGES[color][num - 1]
    const alt = `${color} ${num}`
    return <img src={src} alt={alt} />;
}

*/


export default Dice;

 

개발자 도구 component 에서 props 값을 수정하면 수정하는대로 이미지가 변경됨을 확인할 수 있음.

'React' 카테고리의 다른 글

[React] State/ 주사위 던지기  (0) 2023.03.18
[React] children  (0) 2023.03.17
[React] component/ element  (0) 2023.03.17
[React] 가위바위보(간단버전 2)  (0) 2023.03.16
[React] JSX 에서 JavaScript 사용하기  (0) 2023.03.16