728x90
반응형
v-for
1. 배열
data() {
return {
items: [{ message: 'Foo' }, { message: 'Bar' }]
}
}
<li v-for="item in items">
{{ item.message }}
</li>
<li v-for="(item, index) in items">
{{ index }} - {{ item.message }}
</li>
2. object
data() {
return {
myObject: {
title: 'Vue에서 목록을 작성하는 방법',
author: '홍길동',
publishedAt: '2016-04-10'
}
}
}
<ul>
<li v-for="value in myObject">
{{ value }}
</li>
</ul>
<li v-for="(value, key) in myObject">
{{ key }}: {{ value }}
</li>
<li v-for="(value, key, index) in myObject">
{{ index }}. {{ key }}: {{ value }}
</li>
3. 숫자
<span v-for="n in 10">{{ n }}</span>
n의 값은 0이 아니라 1부터 시작한다.
key를 통한 상태유지
Vue가 각 노드의 ID를 추적하고 기존 엘리먼트를 재사용하고 재정렬할 수 있도록 힌트를 제공하려면 각 항목에 대한 고유한 key속성을 제공해야 한다.
<div v-for="item in items" :key="item.id">
<!-- 내용 -->
</div>
<template v-for="todo in todos" :key="todo.name">
<li>{{ todo.name }}</li>
</template>
가능한 v-for는 key속성과 함께 사용하는 것을 권장한다.
component에 v-for 사용하기
<MyComponent
v-for="(item, index) in items"
:item="item"
:index="index"
:key="item.id"
/>
component에 v-for를 사용할 수 있지만, 데이터가 자동으로 전달되지 않는다. 반복된 데이터를 component에 전달하려면 props를 사용해야 한다.
배열 변경 감지
Vue는 반응형 배열의 변경 메소드가 호출 되는것을 감지하여, 필요한 업데이트를 발생시킨다.
수정 메서드
- push()
- pop()
- shift()
- unshift()
- splice()
- sort()
- reverse()
배열 교체
- filter()
- concat()
- slice()
원본 배열을 수정하지 않고 항상 새 배열을 반환하므로, 이전 배열을 새 배열로 교체해야 한다.
// `items`는 값이 있는 배열의 ref라고 가정된 경우입니다.
this.items = this.items.filter((item) => item.message.match(/Foo/))
필터링/정렬 결과 표시
data() {
return {
numbers: [1, 2, 3, 4, 5]
}
},
computed: {
evenNumbers() {
return this.numbers.filter(n => n % 2 === 0)
}
}
<li v-for="n in evenNumbers">{{ n }}</li>
728x90
반응형
'Vue.js' 카테고리의 다른 글
Vue.js] 9. Form 입력 바인딩 (0) | 2024.12.27 |
---|---|
Vue.js] 8. 이벤트 핸들링 (0) | 2024.12.27 |
Vue.js] 6. 조건부 렌더링 (1) | 2024.12.27 |
Vue.js] 5. 클래스와 스타일 바인딩 (0) | 2024.12.24 |
Vue.js] 4. 계산된 속성 (0) | 2024.12.24 |
댓글