- vue.js에서는 반복문 제공하기 위해 v-'~'와 같은 디렉티브를 제공한다.
- 디렉티브는 DOM에 반응형 행동을 적용하기 위한 특수한 속성을 말한다.
<template>
<div>
<p>{{ foods[0] }}</p>
<p>{{ foods[1] }}</p>
<p>{{ foods[2] }}</p>
<p v-for="(item) in foods" :key="item">{{ item }}</p>
<p v-for="(item, index) in foods" :key="item">{{ item }} - {{ index }}</p>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
foods: ["김밥", "순대", "만두"],
}
}
}
</script>
<style>
</style>
- v-for를 사용하지 않으면 foods[i]와 같이 접근해야 한다.
- v-for를 사용할 시에는 "(리스트 안의 요소를 가리키는 변수) in 리스트"와 같이 해주면 된다.
- 만약 인덱스에 대한 값도 받으려면 (변수, 인덱스)와 같이 설정해주면 자동으로 0값 부터 설정이 된다.
- 이때 주의 사항으로는 :key 속성을 꼭 선언해줘야 한다.
- :key가 필요한 이유는 vue에서 DOM을 효율적으로 업데이트하기 위해 이전 Virtual DOM과 새 Virtual DOM을 비교해서 바뀐 부분만 실제 DOM에 반영한다.
- 이때 v-for로 리스트를 렌더링할 경우, 각 항목을 어떻게 비교할지 판단하기 위해 고유한 식별자(key)가 필요하다
- 따라서 배열을 만들 때 임의로 고유값을 가진 객체로 만드는 것이 좋은 선택일 수 있다.
- item과 같은 변수를 쓸 수 있는 이유는 디렉티브를 사용하면 내부적으로 JavaScript로 변환되고, 변수를 선언해주기 때문이다.
- 자바스크립트에서 선언되므로 :속성이나 {{ 데이터 }}에도 넣어줄 수 있는 것이다.
<li v-for="item in items">
{{ item }}
</li>
items.map(item => {
return createElement('li', item); // item은 이 함수 내부에서 유효함
});
'vue.js' 카테고리의 다른 글
vue.js - 메소드 (0) | 2025.04.28 |
---|---|
vue.js - 이벤트 처리 (0) | 2025.04.28 |
vue.js - export default (1) | 2025.04.24 |
vue.js 구조 (0) | 2025.04.23 |
vue.js 소개 (0) | 2025.04.23 |