SeouliteLab

[Vue.js] key를 통한 상태 유지 본문

카테고리 없음

[Vue.js] key를 통한 상태 유지

Seoulite Lab 2024. 5. 2. 10:11
<template>
  <div>
    <!-- 첫 번째 예제: key를 사용하지 않는 경우 -->
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item }}
      </li>
    </ul>

    <!-- 두 번째 예제: key를 사용하여 상태를 유지하는 경우 -->
    <ul>
      <li v-for="item in itemsWithKeys" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import { reactive } from 'vue';

export default {
  setup() {
    // key를 사용하지 않은 데이터 배열
    const items = reactive(['사과', '바나나', '딸기']);

    // key를 사용한 데이터 배열
    const itemsWithKeys = reactive([
      { id: 1, name: '사과' },
      { id: 2, name: '바나나' },
      { id: 3, name: '딸기' }
    ]);

    return { items, itemsWithKeys };
  }
};
</script>

<style scoped>
/* 컴포넌트에만 적용될 스타일을 작성할 수 있습니다. */
</style>

Vue에서 key를 통한 상태 유지에 대해 알아봅시다.

첫 번째 예제에서는 key를 사용하지 않고 v-for 디렉티브를 사용하여 리스트를 렌더링하는 경우를 보여줍니다. 이 경우 Vue는 인덱스를 기준으로 리스트를 렌더링하게 되는데, 이는 상태를 제대로 유지하지 못할 수 있습니다.

두 번째 예제에서는 key를 사용하여 상태를 유지하는 방법을 보여줍니다. 각 아이템에 고유한 키를 부여하여 Vue가 리스트를 업데이트할 때 아이템의 상태를 제대로 유지할 수 있도록 합니다. 이렇게 하면 Vue가 "in-place patch" 전략을 사용하여 업데이트하며, 리스트 아이템의 순서가 변경되어도 상태가 유지됩니다.

key를 사용하여 상태를 유지하면 Vue가 효율적으로 리스트를 업데이트할 수 있으며, 애플리케이션의 성능과 사용자 경험을 향상시킬 수 있습니다.