React/쇼핑몰 프로젝트

[React] 쇼핑몰 프로젝트 (0) - React시작, Map함수

위르겐 2022. 5. 27. 15:51

 

축구선수를 장바구니에 담는 쇼핑몰을 만들어보자

 

우선 서버와 DB는 다룰줄 모르기 때문에 (node.js 후딱 배워야겠네)

데이터는 객체로 구성된 배열을 자바스크립트 파일에 저장 해두었다

 

이 데이터를 자유자재로 다룰 수 있어야 다음에 서버와 연동했을 때도 수월하게 작업할 수 있을 것이다

 

그동안 수강했던 코딩애플 센세의 강의를 토대로 내가 재밌게 즐길만한 쇼핑몰을 만들어보자

 

let data = [


  {
    id : 0,
    name : 'Mohamed Salah',
    age : '1992년 6월 15일',
    position : 'Right-wing'
  },
  {
    id : 1,
    name : 'Sadio Mane',
    age : '1992년 4월 10일',
    position : 'False-nine'
  },
  {
    id : 2,
    name : 'Luis Diaz',
    age : '1997년 1월 13일',
    position : 'Left-wing'
  }
 

[객체로 구성된 배열 데이터]

import data from './route/data.js'
let [player, setplayer] = useState(data);
 

우리가 실행할 메인 App.js 파일상단에서

data.js파일을 불러오고

State를 이용해 불러온 data배열을 저장한다

 

data는 player라는 변수명으로 바꾼다

 

  {
    player.map(function(a,i) {
      return (
        <List player={player[i]} i={i}/>
        )
      })
    }
 

원하는 위치에 List라는 컴포넌트를 map함수를 사용하여 배치한다.

그리고 a와 i 파라미터를 전달한다

 

여기서 a는 .map앞에 있는 데이터를 직접 보여주고

i는 0부터 1씩 증가하는 자연수를 반환한다.

const List = (props) => {
  return (
  <div className="col-md-4">
  <Nav.Link href={'detail/'+props.i} style={{display:'inline-block'}}>
  <img src={process.env.PUBLIC_URL + '/' + props.i + '.png'} width="70%" height="200px"/>
  </Nav.Link>
  <h4>{props.player.name}</h4>
  <p>{props.player.age}</p>
  <p>{props.player.position}</p>
</div>
  )
}
 

List 컴포넌트에 props를 img와 h4태그 p태그로 불러온다

(navbar와 백그라운드 이미지 코드는 생략했다)

 

 

 

 

이렇게 만들었을 때

 

 

 

 

 

 

짠~

 

내가 원하는 비주얼이다. 흡족하다

이게 메인페이지이고 다음 장 부터는

데이터를 정렬하거나 Route를 이용해 페이지를 이동하는 등의

간단한 기능을 하나씩 추가해보겠다.

 

반응형