오늘 필요한 상품데이터
상품데이터를 3개 준비해왔는데 이걸 html에 보여줍시다.
하단 자료를 state에 보관해놓고 html에 데이터바인딩해보도록 합시다.
실제 서비스였으면 서버 이런데서 받아왔겠지만 서버가 없으니 대충 서버에서 보낸 것이라고 생각합시다.
[
{
id : 0,
title : "White and Black",
content : "Born in France",
price : 120000
},
{
id : 1,
title : "Red Knit",
content : "Born in Seoul",
price : 110000
},
{
id : 2,
title : "Grey Yordan",
content : "Born in the States",
price : 130000
}
]
어려워 보이지만 별거 아닌데
[array자료]에 상품정보가 3개 들어있을 뿐입니다.
근데 상품정보가 너무 길고 복잡해서 {object자료} 에 넣어뒀을 뿐입니다.
그래서 축약하면 [ { }, { }, { } ] 이렇게 생김
여러가지 문자나 숫자를 한 변수에 보관하고 싶으면 array 쓰면 편하댔는데
object 써도 가능합니다.
let user = { 'kim', 20 }
대충 이러면 user라는 변수에 'kim'과 20 둘 다 저장이 가능합니다.
그리고 이걸 object 자료형이라고 합니다.
근데 실은 object 자료는 자료들 왼쪽에 이름붙여야함
let user = { name : 'kim', age : 20 }
자유롭게 'kim'과 20의 별명을 작명하면 됩니다.
array와 다르게 이쁜 별명붙여서 저장할 수 있는게 장점입니다.
let user = { name : 'kim', age : 20 }
console.log(user.name)
원하는 자료만 꺼내고 싶으면 점찍고 별명부르면 됩니다.
object 자료 다루는 법 끝
export default / import 문법
근데 위에 있던 상품정보들을 state로 만들고 싶은데 useState() 안에 넣기엔 너무 깁니다.
그럴 땐 다른파일에 보관했다가 import해올 수도 있습니다.
예를 들어서 data.js라는 파일이 있는데 거기 있던 변수를 App.js 에서 가져와서 쓰고 싶으면
(data.js 파일)
let a = 10;
export default a;
export default 변수명; 이렇게 쓰면 원하는 변수를 밖으로 내보낼 수 있습니다.
(App.js 파일)
import a from './data.js';
console.log(a)
export 했던 변수를 다른 파일에서 사용하고 싶으면
import 작명 from './파일경로' 하면 됩니다.
위 코드에선 a 출력해보면 진짜 10 나옴
(유의점)
- 변수, 함수, 자료형 전부 export 가능합니다.
- 파일마다 export default 라는 키워드는 하나만 사용가능합니다.
- 파일경로는 ./ 부터 시작해야합니다. 현재경로라는 뜻임
export { } / import { } 문법
여러개의 변수들을 내보내고싶으면 export default 말고 이런 문법을 씁니다.
(data.js 파일)
var name1 = 'Kim';
var name2 = 'Park';
export { name1, name2 }
그럼 원하는 변수, 함수 등을 여러개 내보낼 수 있습니다.
(App.js 파일)
import { name1, name2 } from './data.js';
export {} 이걸로 내보냈으면 가져다가 쓸 때 import {} 문법을 씁니다.
(유의점)
- export { } 했던 것들은 import { } 쓸 때 자유작명이 불가능합니다. export 했던 변수명 그대로 적어야함
그래서 결론은
export default / import 쓰거나
export { } / import { } 쓰거나 둘 중 마음에드는걸 써봅시다.
상품데이터도 다른 파일에 저장해두자
배웠으니까 활용해봐야합니다.
위에 있던 길고 복잡한 state를 다른 js파일에 저장해둔 뒤에
그걸 import 해와서 App.js의 useState 안에 넣어봅시다.
(data.js 파일)
let data = 위에있던 긴 array 자료;
export default data
(App.js 파일)
import data from './data.js';
function App(){
let [shoes] = useState(data);
}
이런 식으로 썼습니다.
data.js 파일은 App.js와 같은 경로에 만들어서 경로는 그냥 ./data.js 인듯요
상품데이터를 html에 데이터바인딩하기
여러분이 방금 import 해온건 상품 3개의 데이터입니다.
각각 상품의 제목, 설명, 가격 이런 것들이 들어가있습니다. 이걸 알맞은 자리에 데이터바인딩 해보도록 합시다.
function App(){
let [shoes] = useState(data);
return (
<div className="App">
(생략)
<div className="container">
<div className="row">
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="80%" />
<h4>{ shoes[0].title }</h4>
<p>{ shoes[0].price }</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes2.jpg" width="80%" />
<h4>상품명</h4>
<p>상품정보</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes3.jpg" width="80%" />
<h4>상품명</h4>
<p>상품정보</p>
</div>
</div>
</div>
</div>
)
}
▲ 첫째 상품의 제목, 설명부분에 state에 있던 데이터를 넣어봤습니다.
왜 저렇게 하면 상품명이 나오냐고요?
강의를 참고합시다.
상품명들이 3개 잘 나온다면 집가서 상단에 있는 오늘의 숙제를 하는데
아마 20시간 정도 걸리니까 시간 쏟아서 하도록 합시다.
'리액트' 카테고리의 다른 글
리액트> 페이지 나누기(라우터) (0) | 2024.07.18 |
---|---|
리액트>Card 컴포넌트 만들기 (0) | 2024.07.18 |
리액트> 이미지 넣는 법 & public 폴더 이용하기 (0) | 2024.07.18 |
리액트> 만든 리액트 사이트 build & Github Pages로 배포해보기 (0) | 2024.07.18 |
리액트> class (0) | 2024.07.18 |