[React] Props 2차 배열 활용하기
안녕하세요 오늘은 2차 배열을 활용하기 관점에서 이야기를 해보도록 하겠습니다. 아래 예시는 React에서 Props 처리하는 예시입니다.
App.js 파일에서 Dice라는 컴포넌트에서 Props속성들을 주고 있고, Dice.js 파일에서 그 Props속성들을 받아오고 있습니다.
import Dice from "./Dice" ;
function App ( ) {
return (
<div >
<Dice color ="blue" num ={4} />
</div >
)
}
export default App ;
👉 2차 배열 활용하기
근데 Dice.js파일에서 각각 이미지들을 import 해와서 객체와 배열을 활용해서 'DICE_IMAGES'라는 변수에 정리를 했습니다. 자 이렇게 정리를 해두면 Props를 활용해서 함수 내부에서도 src라는 변수처럼 편리하게(2차 배열) 사용할 수 있습니다. (함수 파라미터 디스트럭처링 문법 활용)
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 ({color = 'blue' , num = 1 } ) {
const src = DICE_IMAGES [color][num - 1 ];
const alt = `${color} ${num} `
return <img src ={src} alt ={alt} />
};
export default Dice ;
👉 또 다른 예시
이번에는 HandIcon.js 파일에서 객체를 활용해서 'IMAGES'라는 변수에 정리를 했습니다. 이렇게 정리해둔 것을 Props를 활용해서 함수 내부에서도 src라는 변수처럼 편리하게 사용할 수 있게 됩니다.
import HandIcon from './HandIcon' ;
function App ( ) {
return (
<div >
<HandIcon value ="rock" />
<HandIcon value ="scissor" />
<HandIcon value ="paper" />
</div >
);
}
export default App ;
import rockImg from './assets/rock.svg' ;
import scissorImg from './assets/scissor.svg' ;
import paperImg from './assets/paper.svg' ;
const IMAGES = {
'rock' : rockImg,
'scissor' : scissorImg,
'paper' : paperImg
}
function HandIcon ({value} ) {
const src = imgs[value]
return <img src ={src} alt ="rock" /> ;
}
export default HandIcon ;