VUE3

Vue3 - 목록 렌더링

J-Chris 2023. 7. 10. 16:53

## V-for 

 

V-for 디렉티브를 사용하여 배열인 목록을 렌더링할 수 있습니다.

 

 

V-for=“item in items” 문법을 사용해서 배열에서 항목을 순차적으로 할당합니다.

v-for=“(item, index) in items” 문법을 사용해서 배열 인덱스를 가져올 수 있습니다.

항목을 나열할 때 각 :key 속성에는 고유한 값을 지정해야합니다. (vue2.2.0 부터 필수)

 

   const items = reactive([

      { id: 1, message: 'Java' },

      { id: 2, message: 'HTML' },

      { id: 3, message: 'CSS' },

      { id: 4, message: 'Javascript' },

    ]);

 

    <li v-for="(item, index) in items" :key="item.id">

      {{ item.message }}

    </li>

 

 

V-for 객체

 

v-for를 사용하여 객체의 속성을 반복할 수도 있습니다.

 

   const myObject = reactive({

      title: '제목입니다.',

      author: '홍길동',

      publishedAt: '2016-04-10',

    });

 

<li v-for="(value, key, index) in myObject" :key="key">

        {{ key }} - {{ value }} - {{ index }}

</li>

 

(예제)

<template>
  <div>
    <ul>
      <template v-for="(item, index) in evenItems">
        <!-- <li v-if="item.id % 2 === 0"> -->
          ID: {{ item.id }} 인덱스: {{ index }}, {{ item.message }}
        <!-- </li> -->
      </template>
      <li v-for="(value, key, index) in myObject" :key="key">
        {{ key }} - {{ value }} - {{ index }}
      </li>
    </ul>
    <hr />
    <ul>
      <li v-for="(value, key, index) in myObject">
      {{ index }} - {{ key }} - {{ value }}
      </li>
    </ul>
  </div>
</template>

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

export default {
  setup () {
    const items = reactive([
      { id: 1, message: 'JAVA' },
      { id: 2, message: 'HTML' },
      { id: 3, message: 'CSS' },
      { id: 4, message: 'JavaScript' },
    ])    

    const myObject = reactive({
      title: '제목',
      author: '홍길동',
      publishedAt: '2016-01-01',
    });

    const evenItems = computed(() => items.filter(item => item.id % 2 === 0));
    return { items, evenItems, myObject }
  }
}
</script>

<style lang="scss" scoped>

</style>