前端分页加载功能实现?

13 篇文章 0 订阅
4 篇文章 0 订阅
本文探讨了前端如何使用Array.slice方法配合后台,实现高效数据分页加载,特别关注了在数据量大时推荐的后台处理方式。通过实例代码展示了如何在每次点击事件中动态加载指定数量的数据,以及一种将大数据集切分为小数组的巧妙方法。
摘要由CSDN通过智能技术生成

分页功能一般是后台实现,前端请求就完事了。但是偶有情况…那也很无奈!数据少的情况,前端可做!数据多了,还是得建议后台来做!!

【注】我这里其实主要用的是Array.slice(start, end)方法!直接上代码,不啰嗦!
【效果】
请添加图片描述
代码:
html:

<template>
  <view>
    <button @click="PageLoad">点击加载</button>
  </view>
</template>

js:

<script>
export default {
	data() {
		return {
			mokeData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
			curPage: 0, // 当前页
			perPage: 3,
			start: 0,
			end: 0,
			data: []
		}
	},
	methods: {
		PageLoad() {
			this.curPage++
			this.pageRequire(this.mokeData, this.curPage, this.perPage, 'asc')
			console.error(this.data);
		},
		// sort 排序类型 desc倒序 / asc正序
		pageRequire(arr, curPage, perPage, sort) {
			let totalLen = arr.length // 数据长度
			// let start = 0;
			// let end = 0;
			let resArr = []
  		let totalPage = Math.ceil(totalLen / perPage) // 总分页数
  		totalPage = totalPage - curPage
  		let curTotalNum = totalLen - this.end
  		if (sort === 'asc') {
				// 阻止
    		if (curTotalNum <= 0) {
    		  alert('没有更多啦~')
    		  return 
    		}
  		  totalPage = totalPage - curPage
  		  this.end = curPage * perPage
  		  resArr = arr.slice(this.start, this.end)
				this.data = [...this.data, ...resArr]
  		  // console.log(resArr);
  		  this.start = this.start + perPage
  		} else {
				// 阻止
   			if (totalPage < 0) {
   			  alert('没有更多啦~')
   			  return 
   			}
  		  this.start = totalLen - (perPage * curPage) // 起止
  		  this.end = totalLen - ((curPage - 1) * perPage) // 终止
  		  if (this.start <= 0) this.start = 0;
  		  resArr= arr.slice(this.start, this.end)
				this.data = [...resArr, ...this.data]
  		  // console.log(resArr);
  		}
		}
	}
}
</script>

还有一种取巧方法:

/**
	 * array: 处理数组
	 * groupNum: 分几组
	 */
	dealArray(array: Array<any>, groupNum: number) {
		let temp:any = []
		for(let i = 0, len = array.length; i < len; i += groupNum) {
			temp.push(array.slice(i, i + groupNum))
		}
		return temp
	}

思路:我们可以将拿到所有数据数组分成几个小数组,这里的小数组你可以理解成每页要展示的条数😆!
结构如下:
在这里插入图片描述
这里的length,可以理解成可分页数😆
那我们每次无论是下拉,还是上滑加载,只需每次根据下标累加,取出每项元素,然后合并到一个新的数组里面,也是可以实现按你要求每次加载几条数据😆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值