uni-app 无限滚动(下拉获取下一页的数据)

本文详细介绍了无限滚动的工作原理,提供了一个Vue组件的代码示例,包括监听滚动事件、判断底部加载、调用API加载新数据及处理加载状态的逻辑。
摘要由CSDN通过智能技术生成

什么是无限滚动 

无限滚动允许用户在滚到到页面底部时,自动获取下一页内容,无需用户手动点击下一页按钮

无限滚动的代码实现示例

data() {
            return {
                infoList:[],//用于接收数据信息
                pageNum:1,//第几页的数据
                pageSize:15,//一次获取几条数据
                loadStatus:'loading',//加载状态
                isLoadMore:false,  //是否加载中
                contentText: {
                                contentdown: '更多',
                                contentrefresh: '加载中',
                                contentnomore: '无更多信息'
                            }
            },
mounted() {
            this.infoList=[];
            this.pageNum=1;
            this.getInfo();
        },
onReachBottom(){  //上拉触底函数
            if(!this.isLoadMore){  //此处判断,上锁,防止重复请求
                this.isLoadMore=true;//开启加载状态,让用户知道正在查询
                this.pageNum+=1;//每次上拉请求新的一页
                this.getInfo();//触发加载数据函数
            }
        },
getInfo(){
                this.$common.getApi('xxx/xxxx/page',{
                    "pageNum":this.pageNum,
                    "pageSize":this.pageSize
                },'POST').then(res=>{
                    if(res.success){
                        if(res.page.list){
                            this.infoList=this.infoList.concat(res.page.list)//返回的数据列表累加到原有的展示数组里
                            if(res.page.list.length<this.pageSize){  //判断接口返回数据量小于请求数据量,则表示此为最后一页
                                this.isLoadMore=true                                             
                                this.loadStatus='nomore'
                            }else{
                                this.isLoadMore=false
                            }
                        }else{
                            this.isLoadMore=true
                            this.loadStatus='nomore'
                        }
                    }else{
                            this.isLoadMore=false
                            if(this.pageNum>1){
                                this.pageNum-=1//触发此函数前pageNum值已加一,请求数据失败,则应进行减一
                            }
                                        
                        }
                }).catch(res=>{
                    
                });
            }

无限滚动一般步骤

1、监听滚动事件

2、判断滚动位置,确定用户是否已经滚动到页面底部

3、触发加载数据,一但判断用户已经滚动到页面底部,调用接口,触发加载新的数据

4、处理数据,获取到新数据后,将其处理并添加都已有内容,以实现无缝加载效果

5、更新滚动状态,在数据加载完成后,更新滚动状态,以便用户继续滚动时再次触发加载下一页数据的过程

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值