Coding/React

리스트렌더링, key속성

민톨이 2024. 3. 6. 17:26
728x90

리스트렌더링

  • 배열 데이터는 map메서드로 렌더링
  • 리스트가 정렬, 이동, 삭제등으로 변경되더라도 리액트가 알 수 있도록 고유 key 제공해야함, map메서드의 index는 배열요소 순서가 변경되면 바뀌므로 사용불가
// App.jsx
import './App.css';

const people = [
  'Creola Katherine Johnson: 수학자',
  'Mario José Molina-Pasquel Henríquez: 화학자',
  'Mohammad Abdus Salam: 물리학자',
  'Percy Lavon Julian: 화학자',
  'Subrahmanyan Chandrasekhar: 천체 물리학자',
];

export default function List() {
  const listItems = people.map((person) => <li key={person}>{person}</li>);

  return <ul>{listItems}</ul>;
}

 

배열의 객체 필터링하기

  • 익명함수로 화살표 함수 사용시 한줄일 경우 {return} 생략가능
  • 리스트의 key로 사용하기위해 데이터에 id가 포함되야함
export const people = [
  {
    id: 0,
    name: 'Creola Katherine Johnson',
    profession: '수학자',
    accomplishment: '우주 비행 계산',
    imageId: 'MK3eW3A',
  },
  .
  .
  .
  .
export default function List() {
  const chemists = people.filter((person) => person.profession === '화학자');

  return (
    <ul className="list">
      {chemists.map((person) => (
        <li key={person.id}>
          <img className="avatar" src={getImageUrl(person)} />
          <p>
            <b>{person.name}: </b>
            {person.profession}
            <b> 업적: </b>
            {person.accomplishment}
          </p>
        </li>
      ))}
    </ul>
  );

key 규칙

  • 데이터베이스에서 가져오는 경우 고유 데이터베이스 ID사용
  • 메모앱등의 로컬 생성 데이터는 데이터 생성시 uuid 패키지 사용하여 고유 식별자 생성
  • key는 형제 간에 고유해야하며 변경되면 안됨
  • 배열 인덱스는 key로 사용 불가, key는 prop으로 전달되지않으므로 별도 prop으로 전달

'Coding > React' 카테고리의 다른 글

이벤트응답 - 이벤트핸들러 2  (0) 2024.03.11
이벤트응답 - 이벤트핸들러 1  (0) 2024.03.08
조건부렌더링  (2) 2024.03.06
컴포넌트에 props전달 - 2  (0) 2024.03.06
컴포넌트에 props전달 - 1  (0) 2024.03.06