vue实现列表
Vue 实现列表的方法
在 Vue 中实现列表渲染通常使用 v-for 指令,可以动态生成多个元素。以下是几种常见的实现方式:
基础列表渲染
使用 v-for 遍历数组,生成列表项。v-for 需要指定一个别名来代表当前项,并可选地指定索引。
<template>
<ul>
<li v-for="(item, index) in items" :key="index">
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ name: 'Item 1' },
{ name: 'Item 2' },
{ name: 'Item 3' }
]
}
}
}
</script>
使用 key 属性
为每个列表项绑定唯一的 key,通常是数据的唯一标识符(如 id),以提高渲染性能。
<template>
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' }
]
}
}
}
</script>
遍历对象
v-for 也可以遍历对象的属性,支持值、键和索引。
<template>
<ul>
<li v-for="(value, key, index) in object" :key="key">
{{ index }}. {{ key }}: {{ value }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
object: {
title: 'Vue Guide',
author: 'Vue Team',
published: '2021'
}
}
}
}
</script>
条件渲染与列表结合
结合 v-if 或 v-show 实现条件性列表渲染。
<template>
<ul>
<li v-for="item in items" :key="item.id" v-if="item.isActive">
{{ item.name }}
</li>
</ul>
</template>
动态更新列表
通过方法或计算属性动态更新列表数据。
<template>
<div>
<ul>
<li v-for="item in filteredItems" :key="item.id">
{{ item.name }}
</li>
</ul>
<button @click="addItem">Add Item</button>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1', isActive: true },
{ id: 2, name: 'Item 2', isActive: false },
{ id: 3, name: 'Item 3', isActive: true }
]
}
},
computed: {
filteredItems() {
return this.items.filter(item => item.isActive)
}
},
methods: {
addItem() {
this.items.push({ id: 4, name: 'Item 4', isActive: true })
}
}
}
</script>
使用组件渲染列表
将列表项封装为组件,提高复用性。
<template>
<ul>
<ListItem
v-for="item in items"
:key="item.id"
:item="item"
/>
</ul>
</template>
<script>
import ListItem from './ListItem.vue'
export default {
components: { ListItem },
data() {
return {
items: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' }
]
}
}
}
</script>
在 ListItem.vue 中:
<template>
<li>{{ item.name }}</li>
</template>
<script>
export default {
props: ['item']
}
</script>
以上方法涵盖了 Vue 中实现列表的常见场景,可以根据需求选择合适的方式。







