vue实现列表显示
Vue 列表显示实现方法
在Vue中实现列表显示通常使用v-for指令,结合数组或对象数据源进行渲染。以下是几种常见实现方式:
基础数组列表渲染
通过v-for遍历数组,item代表当前项,index代表可选索引值:

<template>
<ul>
<li v-for="(item, index) in items" :key="index">
{{ item.name }} - {{ item.price }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ name: '商品A', price: 100 },
{ name: '商品B', price: 200 }
]
}
}
}
</script>
对象属性遍历
v-for也可遍历对象属性,参数顺序为(value, key, index):
<template>
<div v-for="(value, key) in object" :key="key">
{{ key }}: {{ value }}
</div>
</template>
<script>
export default {
data() {
return {
object: {
title: '标题',
content: '内容'
}
}
}
}
</script>
使用计算属性过滤列表
结合计算属性实现筛选功能:

<template>
<input v-model="searchText" placeholder="搜索...">
<ul>
<li v-for="item in filteredList" :key="item.id">
{{ item.text }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
searchText: '',
fullList: [
{ id: 1, text: '苹果' },
{ id: 2, text: '香蕉' }
]
}
},
computed: {
filteredList() {
return this.fullList.filter(item =>
item.text.includes(this.searchText)
)
}
}
}
</script>
动态样式绑定
为列表项添加条件样式:
<template>
<ul>
<li
v-for="item in items"
:key="item.id"
:class="{ 'active': item.isActive }"
@click="toggleActive(item)"
>
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: '选项1', isActive: false },
{ id: 2, name: '选项2', isActive: true }
]
}
},
methods: {
toggleActive(item) {
item.isActive = !item.isActive
}
}
}
</script>
<style>
.active {
background-color: #f0f0f0;
}
</style>
使用组件渲染列表
将列表项封装为可复用组件:
<template>
<ul>
<ListItem
v-for="item in items"
:key="item.id"
:item="item"
@delete="handleDelete"
/>
</ul>
</template>
<script>
import ListItem from './ListItem.vue'
export default {
components: { ListItem },
data() {
return {
items: [
{ id: 1, text: '任务1' },
{ id: 2, text: '任务2' }
]
}
},
methods: {
handleDelete(id) {
this.items = this.items.filter(item => item.id !== id)
}
}
}
</script>
性能优化注意事项
- 始终为
v-for提供唯一的:key值,避免使用索引作为key - 大数据量列表考虑使用虚拟滚动技术
- 复杂计算使用计算属性缓存结果
- 必要时使用
v-once指令优化静态内容






