Full Stack 교육 회고록
9/30- React :Map 함수를 활용한 콜렉션 실습! Map 함수를 활용한 반복 컴포넌트 생성]
순두부 호랑이
2022. 9. 30. 17:50
728x90
SMALL
FrontController패턴: 클라이언트의 다양한 요청들을 한 곳으로 집중시켜 개발 및 유지보수에 효율성을 극대화 시키는 패턴
command 패턴: 클라이언트로 부터 받은 요청들에 대해서 서블릿이 작업을 직접 처리하지 않고 해당 클래스가 처리하도록 하는 패턴
오후 리액트
[map()함수]
배열의 내장 함수 반복되는 컴포넌트를 렌더링 하기 위해 사용됨
[map 특징]
배열 안에서 내가 원하는 규칙에 따라 새로운 배열을 생성한다!
[콜백함수]
- 기능: 함수 안에 또 함수가 있으면
ex) document.get~.addEventListener('click',()=>{})
배열이름.map(콜백함수)
<App.js>
import './App.css';
import Ex01 from './Example/Ex01'
import Ex02 from './Example/Ex02';
import Ex03 from './Example/Ex03';
import Ex04 from './Example/Ex04';
import Ex05 from './Example/Ex05';
function App() {
return (
<div>
{/* ex01 : useState 개념, React Event 개념 */}
{/* <Ex01/> */}
{/* ex02: useState 좋아요 예제 */}
{/* <Ex02/> */}
{/* ex03: useState를 활용한 랜덤숫자게임 */}
{/* <Ex03/> */}
{/* ex04: Map 함수를 활용한 발복 컴포넌트 생성 */}
{/* <Ex04/> */}
{/* ex05: Map 함수를 활용한 콜렉션 실습! */}
<Ex05/>
</div>
);
}
export default App;
ex04: Map 함수를 활용한 반복 컴포넌트 생성
import React from 'react'
import MenuBox from './Ex04Com/MenuBox'
const Ex04 = () => {
//map 함수: 배열의 내장 함수
// 기존 배열에 있는 요소들의 값을 변경해서 새로운 배열을 만들 때 사용
let arr = ['홍길동','임꺽정','콩쥐']
console.log('초기 arr',arr)
let arrTr = arr.map(item => (item+'씨'))
console.log('map 이후 arr', arrTr)
//만약 map 함수로 숫자 데이터에 접근하려면?
let numArr =[158,174,162]
console.log('키 모음', numArr)
let numArr2 = numArr.map((item,idx)=>(idx+'번째 :'+(item-100)))
console.log('몸무게', numArr2)
//만약 map 함수로 데이터에 태그를 입혀주면 어떨까?
let group =['나연','사나','쯔위']
let newGroup = group.map(item => <h1 key={item}>{item}</h1>)
// 오늘의 점심메뉴를 버튼 형식으로 추축
// 결과창 ======
// 오늘 뭐먹지?
// 버튼 모양 [스테이크 덮밥][콩나물 국밥][팟타이]
// 단, 직접 적는 것 금지! map 함수 이용할 것!
let lunch = ['스테이크 덮밥', '콩나물 국밥', '팟타이','연어']
const ck =(event)=>{
console.log(event.target.innerTxt)
}
let lunchBtn = lunch.map(item=> <button onClick={ck} key={item}>{item}</button>)
//만약, 태그 대신 내가 만든 컴포넌트를 반복한다면?
let coffeeMenu = [{
menu: '아메리카노',
price : '3500원'
},{
menu: '카페라떼',
price: '4000원'
},{
menu: '아인슈페너💙',
price : '9999원'
}]
let renderMenu = coffeeMenu.map(item=>(<MenuBox key={item.menu} item={item}></MenuBox>))
return (
<div>
{group}
{newGroup}
<h3>오늘 뭐먹지?</h3>
{lunchBtn}
<hr></hr>
{renderMenu}
</div>
)
}
export default Ex04
<MenuBox.js>
import React from 'react'
const MenuBox = (props) => {
console.log(props.item)
return (
<div>
<h1>{props.item.menu}</h1>
<h3>{props.item.price}</h3>
</div>
)
}
export default MenuBox
<ex05>
Map 함수를 활용한 콜렉션 실습!

import React from 'react'
import PhotoCard from './Ex05Com/PhotoCard'
const Ex05 = () => {
// 조건1) Ex05Com 폴더 => PhotoCard.js 컴포넌트 사용!
// 조건2) member라는 배열안에 name과 url 주소가 포함된 객체들을 생성할 것
// 조건3) 만약 배열에 앖을 추가하면 바로 새로운 카드들이 생기게 할 것
let member = [{
name: '다람쥐',
url: 'https://t1.daumcdn.net/thumb/R720x0/?fname=http://t1.daumcdn.net/brunch/service/user/4arX/image/FToC1jQw1U0mAhJYnEmTPg7ZQD8.jpg'
},{
name: '래서판다',
url: 'https://www.epnnews.com/news/photo/202009/5344_6506_3653.jpg'
},{
name: '사막여우',
url: 'https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/202105/12/humoruniv/20210512080207323tvqg.jpg'
}]
let container={
display:'flex',
flexDirection : 'row'
}
return (
<div style={container}>
{member.map(item => (<PhotoCard key={item.name} item={item}/>))}
</div>
)
}
export default Ex05
<PhotoCard.js>
import React from 'react'
const PhotoCard = (props) => {
console.log('넘어온 값', props)
let boxStyle= {
display:'flex',
flexDirection : 'column',
alignItems : 'center',
justifyContents: 'center',
border : '1px solid black'
}
let imgStyle = {
height: '200px'
}
return (
<div style={boxStyle}>
{props.item.name}
<img style={imgStyle} src={props.item.url}></img>
</div>
)
}
export default PhotoCard
728x90
LIST