Front-End/React

React 더미 데이터 생성, map() 반복

코드깎는머슴 2024. 8. 31. 23:53
728x90
반응형

React 더미 데이터 생성, map() 반복

 

 

 

1. 더미 데이터 생성

먼저 레이아웃 만들어주자

너무 길어질 거 같으니까 css 코드까지 올리지는 않겠다.

 

Header.js

export default function Header() {
    return (
        <div className="header">
            <h1>
                <a href="/">영어 단어 암기</a>
            </h1>
            <div className="menu">
                <a href="#x" className="link">
                    단어 추가
                </a>
                <a href="#x" className="link">
                    날짜 추가
                </a>
            </div>
        </div>
    );
}

 

화면

 

이제 데이터를 만들어보자.

 

data.json

{
  "days": [
    {
      "id": 1,
      "day": 1
    },
    {
      "id": 2,
      "day": 2
    },
    {
      "id": 3,
      "day": 3
    }
  ],
  "words": [
    {
      "id": 1,
      "day": 1,
      "eng": "book",
      "kor": "책",
      "isDone": false
    },
    {
      "id": 2,
      "day": 1,
      "eng": "car",
      "kor": "자동차",
      "isDone": false
    },
    {
      "id": 3,
      "day": 2,
      "eng": "school",
      "kor": "학교",
      "isDone": false
    },
    {
      "id": 4,
      "day": 2,
      "eng": "pencil",
      "kor": "연필",
      "isDone": false
    },
    {
      "id": 5,
      "day": 3,
      "eng": "window",
      "kor": "창문",
      "isDone": false
    },
    {
      "id": 6,
      "day": 3,
      "eng": "hand",
      "kor": "손",
      "isDone": false
    }
  ]
}

 

DayList.js

export default function DayList() {
    console.log(dummy);
    return (
        <></>
    );
}

데이터 확인을 위해 콘솔에 띄워주자

 

App.js

function App() {

    return (
        <div className="App">
            <Header></Header>
            <DayList></DayList>
        </div>
    );
}

 

결과

 

데이터가 잘 나온다.

이제 반복을 해보자

 

 

2. map() 반복

DayList.js

export default function DayList() {
    console.log(dummy);
    return (
        <ul className="list_day">
            {dummy.days.map( day =>
                <li>Day {day.day}</li>
                
            )}
            <li></li>
        </ul>
    );
}

 

화면

화면을 보면 반복이 잘 되는 거 같은데 콘솔창에 오류가 나온다.

 

키가 필요하다는 건데, 반복되는 요소에는 고유한 키가 있어야 한다.

 

코드 수정

DayList.js

export default function DayList() {
    console.log(dummy);
    return (
        <ul className="list_day">
            {dummy.days.map( day =>
                <li key={day.id}>Day {day.day}</li>

            )}
            <li></li>
        </ul>
    );
}

이러면 이제 경고문이 사라진다.

 

이제 각 날짜에 맞는 단어 리스트를 생성해주자

 

Day.js

export default function Day() {
    const day = 1;
    const wordList = dummy.words.filter(word =>
        word.day === day
    );

    return <>
        <table>
            <tbody>
            {
                wordList.map(word => (
                        <tr>
                            <td>
                                {word.eng}
                            </td>
                            <td>
                                {word.kor}
                            </td>
                        </tr>
                    )
                )
            }
            </tbody>
        </table>
    </>
}

 

위 코드를 보면 알겠지만, 지금 날짜를 직접 지정해주고 있는데 이건 나중에 동적으로 변경되게 바꿔야 한다.

근데 지금은 반복문 공부하는 부분이니까 그건 다음 부분에 넣겠다.

728x90
반응형