vue实现列表自动扩充
Vue 实现列表自动扩充的方法
使用 v-for 动态渲染列表
通过 Vue 的 v-for 指令可以动态渲染列表数据。当数据变化时,列表会自动更新。

<template>
<div>
<ul>
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
<button @click="addItem">添加项目</button>
</div>
</template>
<script>
export default {
data() {
return {
items: ['项目1', '项目2', '项目3']
}
},
methods: {
addItem() {
this.items.push(`项目${this.items.length + 1}`)
}
}
}
</script>
监听滚动事件实现无限滚动
结合滚动事件监听,可以在用户滚动到列表底部时自动加载更多数据。

<template>
<div>
<ul ref="list">
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
<div v-if="loading">加载中...</div>
</div>
</template>
<script>
export default {
data() {
return {
items: Array.from({ length: 20 }, (_, i) => `项目${i + 1}`),
loading: false
}
},
mounted() {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll)
},
methods: {
handleScroll() {
const list = this.$refs.list
if (list && window.innerHeight + window.scrollY >= list.offsetHeight - 100 && !this.loading) {
this.loadMore()
}
},
loadMore() {
this.loading = true
setTimeout(() => {
const newItems = Array.from({ length: 10 }, (_, i) => `项目${this.items.length + i + 1}`)
this.items = [...this.items, ...newItems]
this.loading = false
}, 1000)
}
}
}
</script>
使用第三方库实现自动扩充
可以使用如 vue-infinite-loading 这样的第三方库简化无限滚动实现。
安装:
npm install vue-infinite-loading
使用示例:
<template>
<div>
<ul>
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
<infinite-loading @infinite="loadMore"></infinite-loading>
</div>
</template>
<script>
import InfiniteLoading from 'vue-infinite-loading'
export default {
components: { InfiniteLoading },
data() {
return {
items: Array.from({ length: 20 }, (_, i) => `项目${i + 1}`),
page: 1
}
},
methods: {
loadMore($state) {
setTimeout(() => {
const newItems = Array.from({ length: 10 }, (_, i) => `项目${this.items.length + i + 1}`)
this.items = [...this.items, ...newItems]
this.page += 1
$state.loaded()
if (this.items.length >= 50) {
$state.complete()
}
}, 1000)
}
}
}
</script>
注意事项
- 确保为列表项设置唯一的
key属性以提高渲染性能 - 大量数据渲染时考虑使用虚拟滚动技术优化性能
- 异步加载数据时要处理好加载状态和错误状态
- 组件销毁时要移除事件监听器防止内存泄漏






