REACT/[inflearn] 처음만난 리액트

10강. List and Keys

web_seul 2022. 11. 11. 20:36
반응형

List와 Key

List : 목록, Array(배열: JS의 변수나 객체들을 하나의 변수로 묶어놓은 것)

Key : 열쇠, 각 객체나 아이템을 구분할 수 있는 고유한 값, 아이템들을 구분하기위한 고유한 문자열

 

여러개의 Component렌더링하기

map() : 배열의 각 변수에 처리후 리턴하는 것

const doubled = numbers.map((number) => number * 2);

const number = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
  <li>{number}</li>
};
ReactDOM.render(
  <ul>{listItems}</ul>,
  document.getElementById('root')
);

//렌더링된 코드
ReactDOM.render(
  <ul>
    <li>{1}</li>
    <li>{2}</li>
    <li>{3}</li>
    <li>{4}</li>
    <li>{5}</li>
  </ul>,
  document.getElementById('root')
);

 

기본적인 List Component

function NumberList(props){
  const {numbers = props;
  const listItems = numbers.map((number) =>
    <li>{number}</li>
  );
  return(
    <ul>{listItems}</ul>
  );
}
const number = [1, 2, 3, 4, 5];
ReactDOM.render(
  <NumberList numbers = {numbers}>,
    document.getElementById('root')
);

 

List의 Key

Key의 값은 같은 List에 있는 Elements사이에서만 고유한 값이면 된다.

//key로 값을 사용하는 경우 : 중복된 값이 있을 경우x
const numbers = [1, 2, 3, 3, 5];
const listItems = numbers.map((number) =>
  <li key={number.toString()}>
    {number}
  </li>
);

//key로 id를 사용하는 경우 : 고유한 값이므로 o
const todoItems = todos.map((todo) =>
  <li key={todo.id}>
    {todo.text}
  </li>
);

//key로 index를 사용하는 경우 : 순서가 바뀔수 있으므로 권장x, 성능저하, component state오류
const todoItems = dotos.map((todo, index) =>
  //아이템들의 고유한 ID가 없을 경우에만 사용
  <li key={index}>
    {todo.text}
  </li>
);

 

map()함수 안에 있는 Elements는 꼭 key가 필요하다

 

(실습) 출석부 출력하기

//AttendanceBook.jsx
import React from "react";

const students = [
    {
        id:1,
        name:"Inje",
    },
    {
        id:2,
        name:"Steve",
    },
    {
        id:3,
        name:"Bill",
    },
    {
        id:4,
        name:"Jeff",
    }
];

function AttendanceBook(props){
    return(
        <ul>
            {/* {students.map((student) => {
                // return <li key={student.id}>{student.name}</li>;

                // key를 포맷팅된 문자열로 변경
                // return <li key={`student-id-${student.id}`}>{student.name}</li>;
            })} */}

            
            {/*  key를 index로 변경 */}
            {students.map((student, index) => {
                return <li key={index}>{student.name}</li>;
            })}
        </ul>
    );
}
export default AttendanceBook;

//index.js
  <React.StrictMode>
    <AttendanceBook />
  </React.StrictMode>
)

 

반응형

'REACT > [inflearn] 처음만난 리액트' 카테고리의 다른 글

12강. Lifting State Up  (0) 2022.11.22
11강. Forms  (0) 2022.11.21
9강. Conditional Rendering  (0) 2022.11.10
8강. Handling Events  (0) 2022.11.09
7강. Hooks  (0) 2022.11.08