Vue에서의 key 속성

Vue가 v-for 디렉티브로 렌더링된 요소 목록을 업데이트할 때, 기본적으로 "in-place" 업데이트 전략을 사용합니다. 배열이나 객체의 순서가 변경되더라도 Vue는 DOM 요소를 이동시키지 않고, 해당 인덱스에 맞는 새로운 데이터를 표시하도록 각 요소를 "제자리에서" 업데이트합니다.

Vue가 각 요소의 정체성을 어떻게 식별할지, 그리고 따라서 기존 요소를 재사용하고 재정렬할지 알려주기 위해서는, 각 요소에 고유한 key 속성을 지정해야 합니다.

키가 없으면 Vue는 요소 이동을 최소화하고 동일한 유형의 요소를 최대한 변경/재사용하려고 하는 알고리즘을 사용합니다. 키를 사용하면 요소는 키 순서의 변경에 따라 재정렬되며, 더 이상 존재하지 않는 키를 가진 요소는 항상 제거/소멸됩니다.

v-for와 함께 key 속성을 항상 지정하는 것이 권장됩니다. 단, 반복되는 DOM 내용이 단순하거나, 성능 향상을 위해 기본 업데이트 전략에 의도적으로 의존하는 경우는 예외입니다.

일반적으로 객체 배열을 반복할 때 키 추가 문제가 발생합니다. 이 경우 객체의 키 중 하나가 고유 필드, 예를 들어 id가 될 수 있습니다:

javascriptdata() {
  return {
    users: [
      {
        id: 1,
        name: 'name1',
        surn: 'surn1',
      },
      {
        id: 2,
        name: 'name2',
        surn: 'surn2',
      },
      {
        id: 3,
        name: 'name3',
        surn: 'surn3',
      },
    ]
  }
}

다음과 같이 해당 키를 지정하여 주어진 배열을 반복해 봅시다:

html<template>
  <p v-for="user in users" :key="user.id">
    {{ user.name }}
    {{ user.surn }}
  </p>
</template>
Задание 1

다음 배열을 반복하고 ul 목록으로 제품 이름을 출력하세요:

javascriptdata() {
  return {
    products: [
      {
        id: 1,
        name: 'product1',
      },
      {
        id: 2,
        name: 'product2',
      },
      {
        id: 3,
        name: 'product3',
      },
    ]
  }
}