- Published on
✨ React JS 초보자를 위한 리액트 강좌 #9 강의 정리
- 글쓴이
📌 목차
💁🏻
- 강의 소개
- 설치(create-react-app)
- 컴포넌트,JSX
- 첫 컴포넌트 만들기
- CSS 작성법
- 이벤트 처리
- state,useState
- props
- 더미 데이터 구현
- 라우터 구현 react-router-dom
- json-server,REST API
- useEffect,fetch()로 API 호출
- custom Hooks
- PUT(수정),DELETE(삭제)
- POST(생성),useHistory
- 마치며
- 부록: 타입스크립트 적용하기
map()
반복문
더미 데이터 구현, component 폴더에 Header.js
파일을 만들어놓고
src폴더에는 db폴더를 만들고 그 안에 data.json
파일을 만든다.
Header.js
import React from 'react'
export default function Header() {
return (
<div className="header">
<h1>
<a>토익 영단어(고급)</a>
</h1>
;<div className="menu">
<a href="#x" className="link">
단어 추가
</a>
<a href="#x" className="link">
Day 추가
</a>
</div>
</div>
)
}
data.json
{
"days": [
{
"id": 1,
"day": 1
},
{
"id": 2,
"day": 2
},
{
"id": 3,
"day": 3
},
{
"day": 4,
"id": 4
}
],
"words": [
{
"id": 1,
"day": 1,
"eng": "book",
"kor": "책",
"isDone": false
},
{
"id": 3,
"day": 2,
"eng": "car",
"kor": "자동차",
"isDone": false
},
{
"id": 5,
"day": 3,
"eng": "school",
"kor": "학교",
"isDone": false
},
{
"id": 6,
"day": 3,
"eng": "pencil",
"kor": "연필",
"isDone": false
}
]
}
그다음 component폴더 안에 DayList.js
파일을 만들고 dummy 데이터를 불러온다.
import dummy from "../db/data.json";
map()
반복문을 사용해서 단어 수만큼의 li
를 만들어 주면 좋다.
map()
은 배열을 받아서 또 다른 배열을 반환하는 건데 이때 반환되는 배열의 요소는 jsx로 작성하면 된다.
화살표 함수로 바로 return
문을 작성한다.
import React from 'react'
import dummy from '../db/data.json'
export default function DayList() {
return (
<ul className="list_day">
{dummy.days.map((day) => (
<li key={day.id}>Day {day.day}</li>
//key는 반복되는 요소에 고유한 값을 넣어줘야 하는데
//여기서는 day.id값을 넣어준다.
))}
</ul>
)
}
마찬가지로 dummy 데이터를 사용하는 Day.js
파일도 component폴더안에 만들어준다.
그리고 App.js에 Day.js
를 import해준다.
import React from 'react'
import dummy from '../db/data.json'
export default function Day() {
//dummy.words
return (
<div>
<table>
<tbody>
{dummy.words.map((word) => (
<tr>
<td>{word.eng}</td>
<td>{word.kor}</td>
</tr>
))}
</tbody>
</table>
</div>
)
}
해당 날짜에 맞는 단어만 출력하게 하려면 filter함수를 이용한다.
import React from 'react'
import dummy from '../db/data.json'
export default function Day() {
//dummy.words
return (
<div>
<table>
<tbody>
{dummy.map((word) => (
<tr key={word.id}>
<td>{word.eng}</td>
<td>{word.kor}</td>
</tr>
))}
</tbody>
</table>
</div>
)
}