SeouliteLab

[Vue.js] v-if에 v-for 사용하기 본문

카테고리 없음

[Vue.js] v-if에 v-for 사용하기

Seoulite Lab 2024. 5. 2. 10:09
<template>
  <div>
    <!-- 첫 번째 예제: v-if 내부에 v-for를 사용할 때 -->
    <div v-if="showList">
      <ul>
        <li v-for="item in items" :key="item.id">
          {{ item.name }}
        </li>
      </ul>
    </div>

    <!-- 두 번째 예제: v-for를 <template> 태그로 감싼 후 v-if와 함께 사용 -->
    <template v-if="showList">
      <ul>
        <li v-for="item in items" :key="item.id">
          {{ item.name }}
        </li>
      </ul>
    </template>
  </div>
</template>

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

export default {
  setup() {
    const showList = true;

    // 데이터 배열
    const items = reactive([
      { id: 1, name: '아이템 1' },
      { id: 2, name: '아이템 2' },
      { id: 3, name: '아이템 3' }
    ]);

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

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

Vue에서 v-if 내부에 v-for를 사용할 때와 태그로 감싼 후 v-if와 함께 사용하는 방법에 대해 알아봅시다.

첫 번째 예제에서는 v-if 내부에 v-for를 사용하는 경우를 보여줍니다. 그러나 이런 구성은 오류를 일으킬 수 있습니다. 왜냐하면 v-if가 v-for보다 우선순위가 높기 때문에 v-if 조건문에서 v-for 변수에 접근할 수 없기 때문입니다.

두 번째 예제에서는 태그로 감싼 후 v-if와 함께 v-for를 사용하는 방법을 보여줍니다. 이렇게 하면 명시적으로 v-for를 태그로 감싸게 되므로, 코드의 가독성이 높아지고 오류를 방지할 수 있습니다.

v-if와 v-for를 같은 노드에 사용할 때는 주의해야 합니다. 명시적으로 처리하고자 할 때에는 태그로 감싼 후 사용하는 것이 좋습니다.