分页加载

163 阅读1分钟

1、背景

在移动端开发时,经常会遇到展示列表数据的情况,当列表数据过多时会通过分页进行展示。

每页加载一定的数据,当翻到页面底部时,再加载第二页的数据。

2、实现

根据上面的描述,我们需要处理两件事:

  • 要知道当前页面已经滚动到底部;
  • 滚动到底部时加载下一页的数据;

2.1 获取数据函数实现

data:{
list:[],
page:1,
pageSum:'0'
},
getList(){
api.getList({
page:this.data.page
}).then(
res=>{
let list
if(this.data.page == 1){
//若请求第一页,则直接赋值
list = res.list
}else{
//否则将获取的数据与原数据合并
list = this.data.list.concat(res.list)
}
this.setData({
list:list
})
})
}

实际案例中的做法

data(){
shownDatas:[],
pageSize:10,
pageNum:1,
}
getDatas(){
uni.$api.productionDefectitemTodayDefectitem({
	pageNum: this.pageNum,
	pageSize: this.pageSize,
	searchValue: this.searchValue
	}).then(
        res=>{
        
        if (this.pageNum == 1) 
        this.shownDatas = rows
	else this.shownDatas = this.shownDatas.concat(rows)
	this.hasMore = total > this.form.pageNum * this.form.pageSize
        }
        
        )
}

2.2 滚动到底部触发

<u-list @scrolltolower="scrolltolower">

</u-list>

scrolltolower(e){
   if(this.hasMore){
       this.form.pageNum++
      this.getDatas()
}
}