본문 바로가기
개념정리/Vue.js

[Vue.js] Vue v-for와 key 개념 및 예제

by lanuarius19 2022. 4. 26.
728x90

 

Vue.js v-for와 key 개념 및 예제

 

코드

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>뷰 v-for</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-for="person in people"> // == <div v-for="person of people">
            이름: {{ person.name }} 나이: {{ person.age }}
        </div>
    </div>
    <script>
        new Vue({
           el: '#app',
            data: {
                people: [
                    {name: 'AAA', age: 10},
                    {name: 'BBB', age: 20},
                    {name: 'CCC', age: 30},
                    {name: 'DDD', age: 40},
                    {name: 'EEE', age: 50}
                ]
            },
            methods: {
                
            }
        })
    </script>
</body>
</html>

 

 

실행 결과

 

 


 

코드 - index 사용하기

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>뷰 v-for</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-for="(person, index) in people">
            {{ index }} 이름: {{ person.name }} 나이: {{ person.age }}
        </div>
    </div>
    <script>
        new Vue({
           el: '#app',
            data: {
                people: [
                    {name: 'AAA', age: 10},
                    {name: 'BBB', age: 20},
                    {name: 'CCC', age: 30},
                    {name: 'DDD', age: 40},
                    {name: 'EEE', age: 50}
                ]
            },
            methods: {
                
            }
        })
    </script>
</body>
</html>

 

실행 결과

 

 


 

코드 - key 사용하기

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>뷰 v-for</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-for="(person, index) in people" :key="person.id">
            {{ index }} 이름: {{ person.name }} 나이: {{ person.age }}
        </div>
    </div>
    <script>
        new Vue({
           el: '#app',
            data: {
                people: [
                    {id: 1, name: 'AAA', age: 10},
                    {id: 2, name: 'BBB', age: 20},
                    {id: 3, name: 'CCC', age: 30},
                    {id: 4, name: 'DDD', age: 40},
                    {id: 5, name: 'EEE', age: 50}
                ]
            },
            methods: {
                
            }
        })
    </script>
</body>
</html>

 

key를 사용하는 이유

기존 엘리먼트를 재사용 및 정렬하기 위해서 v-for의 각 항목들에 고유한 속성을 제공하여 항목들을 고유한 ID로 식별할 수 있다.

반복되는 DOM 내용이 단순한 경우나 의도적인 성능 향상을 위해 기본 동작에 의존하지 않는 경우를 제외하고는 가능하면 언제나 v-forkey를 추가하는 것을 권장한다.

key값에 index를 넣는 것도 가능하지만 데이터의 삭제가 발생할 경우 해당 데이터들의 index가 변화되므로 권장하지 않는다.

key값으로 할 적당한 필드가 없을 경우 :key="person.name + '-' + person.age"와 같이 사용 가능하다.

객체와 배열과 같이 기본 타입이 아닌 값을 key로 사용해서는 안된다. (문자열 및 숫자 사용하기)

728x90

댓글