vue实现列表显示
使用 Vue 实现列表显示
基础列表渲染
在 Vue 中,可以通过 v-for 指令实现列表渲染。以下是一个简单的示例:
<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>
动态绑定列表数据
可以通过方法或计算属性动态获取列表数据:

<template>
<ul>
<li v-for="item in filteredItems" :key="item.id">
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Apple', category: 'fruit' },
{ id: 2, name: 'Carrot', category: 'vegetable' },
{ id: 3, name: 'Banana', category: 'fruit' }
]
}
},
computed: {
filteredItems() {
return this.items.filter(item => item.category === 'fruit')
}
}
}
</script>
列表事件处理
可以为列表项添加事件处理:
<template>
<ul>
<li
v-for="item in items"
:key="item.id"
@click="selectItem(item)"
>
{{ 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' }
]
}
},
methods: {
selectItem(item) {
console.log('Selected item:', item)
}
}
}
</script>
列表动画效果
可以使用 Vue 的过渡系统为列表添加动画:

<template>
<div>
<button @click="addItem">Add Item</button>
<transition-group name="list" tag="ul">
<li v-for="item in items" :key="item.id">
{{ item.name }}
<button @click="removeItem(item.id)">×</button>
</li>
</transition-group>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' }
],
nextId: 3
}
},
methods: {
addItem() {
this.items.push({ id: this.nextId++, name: `Item ${this.nextId-1}` })
},
removeItem(id) {
this.items = this.items.filter(item => item.id !== id)
}
}
}
</script>
<style>
.list-enter-active, .list-leave-active {
transition: all 0.5s;
}
.list-enter, .list-leave-to {
opacity: 0;
transform: translateY(30px);
}
</style>
使用组件渲染列表
对于复杂列表项,可以使用组件:
<template>
<ul>
<list-item
v-for="item in items"
:key="item.id"
:item="item"
@remove="removeItem"
/>
</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' }
]
}
},
methods: {
removeItem(id) {
this.items = this.items.filter(item => item.id !== id)
}
}
}
</script>
ListItem.vue 组件:
<template>
<li>
{{ item.name }}
<button @click="$emit('remove', item.id)">×</button>
</li>
</template>
<script>
export default {
props: {
item: {
type: Object,
required: true
}
}
}
</script>
这些方法涵盖了 Vue 中实现列表显示的基本和进阶用法,可以根据实际需求选择适合的方式。






