ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React 더미 데이터 생성, map() 반복
    Front-End/React 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
    반응형

    'Front-End > React' 카테고리의 다른 글

    React RestAPI - 1  (2) 2024.09.03
    React 라우터  (1) 2024.09.02
    React 각 컴포넌트 별 CSS 적용  (0) 2024.08.31
    React Component  (0) 2024.08.30
    React 이벤트 리스너(핸들러)  (0) 2024.08.30
Designed by Tistory.