Vue2 ElementUI InfiniteScroll 无限滚动

ElementUI InfiniteScroll 无限滚动

使用场景

  在处理无限加载的数据列表时,无论是 PC Web 端还是 Mobile 移动端,皆会涉及数据滚动加载问题。首先无限加载的功能需要检测到数据展示区域滚动到某一个区域或者高度才会触发事件加载机制,从而触发下一页数据的加载,直至当前数据全部加载完成,再次滚动到指定区域时,依据加载完成状态做数据的拦截处理。

安装插件

shell 复制代码
yarn add vue-infinite-scroll --save
// or
npm install vue-infinite-scroll --save
// or
pnpm install vue-infinite-scroll --save
// or
bun install vue-infinite-scroll --save
  • 提示

  具体使用方法请查看 npmjs write-excel-file;npmmirror 访问地址:write-excel-file

引用插件

javascript 复制代码
// 全局引用
import infiniteScroll from "vue-infinite-scroll";
Vue.use(infiniteScroll);

// 局部引用
import infiniteScroll from "vue-infinite-scroll";
new Vue({
	directives: { infiniteScroll }
});

属性配置

  • elementUI InfiniteScroll 文档
参数 类型 默认值 可选值 是否必填 备注
infinite-scroll-disabled Boolean false true/false 禁用滚动加载
infinite-scroll-distance Number 0 - 滚动距离
infinite-scroll-immediate Boolean true true/false 滚动加载时是否立即执行
infinite-scroll-delay String bottom top/bottom 节流时延,单位为 ms
  • vue-infinite-scroll 文档
参数 类型 默认值 可选值 是否必填 备注
infinite-scroll-disabled Boolean false true/false 禁用滚动加载
infinite-scroll-distance Number 0 - 滚动距离
nfinite-scroll-immediate-check Boolean true true/false 在绑定容器后立即检查,若高度不够,无法填满可滚动容器
infinite-scroll-delay String bottom top/bottom 节流时延,单位为 ms
infinite-scroll-listen-for-event Function infinite scroll 会在 Vue 实例中发出事件时再次检查。

代码实例

html 复制代码
<template>
	<article v-load="loading">
		<ul v-infinite-scroll="dataLoad" infinite-scroll-disabled="noMore">
			<li v-for="item in list" :key="item.value">{{ item.name }}</li>
		</ul>
	</article>
</template>

<script>
	export default({
		data(){
			loading: false,
			list: [],
			pageNo: 0,
			pageTotal: 0
		},
		computed:{
			noMore(){
				return this.pageNo ? this.pageTotal > this.list.length : false;
			}
		},
		methods:{
			// 数据加载
			dataLoad(){
				this.loading = true;
				this.pageNo++;
				getMoreData(this.pageNo).then(res => {
					let {list, total} = res.data;
					if(this.pageNo === 1){
						this.pageTotal = total || 0;
						if(this.list.length) this.list.splice(0);
					}
					this.list.push(...(list || []));
				})
				.catch(err => {
					console.log('error', err);
				})
				.finally(() => {
					this.loading = false;
				});
			}
		}
	})
</script>

CSS 样式

css 复制代码
article {
	height: 400px;
	overflow: hidden;
	overflow-y: auto;
}

注意事项:

  • 「infinite-scroll-disabled」:禁用滚动加载,默认为 false ,当为 true 时,滚动加载将不会触发;
  • 加载完成数据需要禁用滚动加载;此处传值为 Boolean 类型,但此处不能使用 vuev-bind 进行数据绑定,否则无效;
  • 包裹滚动加载数据的区域,需要限制高度!!!
相关推荐
你脑门上的脚印6 分钟前
Vue 项目从零实现语音转文字、文字转语音功能(完整可用 + 踩坑指南)
前端·vue.js
paopaokaka_luck27 分钟前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
程序员鱼皮33 分钟前
3 大 DeepSeek Harness 进阶玩法,招多个大肥鱼帮我干活!
前端·后端·ai编程
KoPa36 分钟前
HeySmart:大模型开源网关基座-请求生命周期与钩子引擎
前端·后端
悟空瞎说44 分钟前
# Dispatch(GCD)苹果官方文档 白话文讲解(Objective‑C 版本文档)
javascript
七牛开发者1 小时前
Coding Agent 如何跑稳长任务?从上下文管理到运行时状态
前端·javascript·后端
半个落月1 小时前
从 CSR 到 Server Component:吃透 Next.js 16 App Router 路由、布局与 SEO
前端·next.js
七牛开发者1 小时前
拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时
前端·javascript·后端
葡萄城技术团队1 小时前
表格智能体系列 · 1:一句话怎么变成一次表格操作
前端
梦曦i1 小时前
Vue-Router 2.4.0 新增可控重定向功能
前端·uni-app