iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序实现瀑布流分页滚动加载
  • 524
分享到

微信小程序实现瀑布流分页滚动加载

2024-04-02 19:04:59 524人浏览 泡泡鱼
摘要

本文实例为大家分享了微信小程序实现瀑布流分页滚动加载的具体代码,供大家参考,具体内容如下 两种分页方式 普通的分页效果会在页面底部提供点击下一页和上一页的按钮,在点击了按钮之后才会触

本文实例为大家分享了微信小程序实现瀑布流分页滚动加载的具体代码,供大家参考,具体内容如下

两种分页方式

普通的分页效果会在页面底部提供点击下一页和上一页的按钮,在点击了按钮之后才会触发调取数据的接口,这种方式的用户体验一般

另一种分页效果不需要用户点击按钮,只要浏览到当前页面的后几条数据时,系统会自动发送请求获取后一页的数据,并展示到页面上,这样就可以实现类似无限滚动的效果

以csdn为例,当滚动条到达这个地方时,会自动调用请求下一页数据的接口,然后累加到加载完成的数据列表中

实现思路

滚动分页的方式存在一个问题,当用户滚动的非常快时,可能会导致第一次请求还未完成,第二次请求就开始了,为了避免这个问题,我们可以加入一个标识,发送一次请求后加锁,请求完成后释放锁,这样就可以完美避免这种问题

得出实现思路

1、判断是否还有可加载的数据
2、获取锁
3、发送请求,调用接口
4、释放锁
5、返回数据

代码实现

首先我们需要一个paging对象


class Paging{
  page //记录当前页码
  count //记录一页显示的数量
  req //接口请求对象(此处我已封装,可按照自己需求定义属性)
  url //请求路径
  moreData = true //是否存在下一页数据(首次请求时默认存在下一页数据)
  accumulator = [] //已加载的数据列表
  locker = false //锁标识
}

为paging对象定义一个构造器,默认从第一页开始请求,每页五条数据


constructor(req, page=0, count=5){
    this.page = page
    this.count = count
    this.req = req
    this.url = req.url
  }

接下来编写getMoreData方法


getMoreData(){
 //1、判断是否存在下一页数据
 //2、获取锁,判断锁是否为释放状态
 //3、请求数据
 //4、释放锁
 }

1、判断是否存在下一页数据

这里直接获取moreData属性进行判断


if(!this.moreData){
      return
}

2、获取锁

此处新增一个方法,如果当前没有锁,代表可以继续请求数据,在请求数据前先把锁标识设置为true,防止下次请求继续发送


_getLocker(){
    if(this.locker){
      return false
    }
    this.locker = true
    return true
}

3、请求数据

我们需要返回给页面的数据结构如下:


{
        empty, //是否为空
        items, //当前页数据
        moreData, //是否存在下一页数据
        accumulator //已经请求过的所有数据
}

首先定义一个获取请求结构的方法


 _getCurrentReq(){
    let url = this.url
    //设置请求参数
    const params = `page=${this.page}&count=${this.count}`
    //判断拼接方式
    if(url.includes('?')){
      url += '&' + params
    }else{
      url += '?' + params
    }
    this.req.url = url
    return this.req
 }

获取数据的方法如下:


 _actualGetData(){
 
    const req = this._getCurrentReq() //获取到具体的请求内容
    
    let paging = Http.request(req) //调用自定义工具中的请求方法,进行数据的获取
    
    //如果没有获取到结果直接返回null
    if(!paging){
      return null
    }
  
    if(paging.total === 0){
      return {
        empty: true,
        items: [],
        moreData: false,
        accumulator: []
      }
    }
    
    //如果当前页码数小于总页码数表示还存在下一页数据,设置moreData为true,否则设置为false
    this.moreData = pageNum < totalPage-1 ? true : false
    
    //如果存在下页数据,将page+1,便于下次的获取
    if(this.moreData){
      this.page += 1
    }
    
    //因瀑布流显示数据需要累加展示,所以数据列表也需要累加
    this.accumulator = this.accumulator.concat(paging.items)
    return{
      empty: false,
      items: paging.items,
      moreData: this.moreData,
      accumulator: this.accumulator
    }
 }

4、释放锁

释放锁直接将锁标识的状态改变即可


this.locker = false

getMoreData方法编写完毕,然后就可以在对应界面的js文件中进行调用了

在第一次进入界面时,需要自动调用一次,然后在用户每次触底时再次调用


initBottomSpuList(){
 //获取到paging对象
    const paging = new Paging({
      url: url
    })
    //将paging对象存入js的data中
    this.data.spuPaging = paging
    //调用方法
    const data = paging.getMoreData()
    if(!data){
      return
    }
    //重新加载瀑布流
    wx.lin.renderWaterFlow(data.items)
},

微信小程序有自带的触底时自动触发的函数,将方法调用的代码写入这个函数即可


onReachBottom: function () {
    const data = this.data.spuPaging.getMoreData()
    if(!data){
      return
    }
    //重新加载瀑布流
    wx.lin.renderWaterFlow(data.items)
}

至此,就可以实现瀑布流分页滚动加载的效果了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 微信小程序实现瀑布流分页滚动加载

本文链接: https://www.lsjlt.com/news/135798.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序实现瀑布流分页滚动加载
    本文实例为大家分享了微信小程序实现瀑布流分页滚动加载的具体代码,供大家参考,具体内容如下 两种分页方式 普通的分页效果会在页面底部提供点击下一页和上一页的按钮,在点击了按钮之后才会触...
    99+
    2022-11-12
  • 微信小程序瀑布流如何实现
    本篇内容介绍了“微信小程序瀑布流如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最简单的实现方案,不适用有分页的场景。这个方案简单的原...
    99+
    2023-06-26
  • 小程序实现瀑布流动态加载列表
    本文实例为大家分享了小程序实现瀑布流动态加载列表的具体代码,供大家参考,具体内容如下 最近业务需要做一个商城列表,就自己写了一个瀑布流来加载列表。 这个列表在很多地方都需要用到,就...
    99+
    2022-11-13
  • 微信小程序实现本地分页加载
    本文实例为大家分享了微信小程序实现本地分页加载的具体代码,供大家参考,具体内容如下 先看看效果图: 下面附上代码:(这些图片的地址记得改成自己的) 1、js文件: // pages...
    99+
    2022-11-13
  • 微信小程序实现监听页面滚动
    本文实例为大家分享了微信小程序实现监听页面滚动的具体代码,供大家参考,具体内容如下 1.正常状态下 2.页面滚动到大于100时显示定位到顶部的view盒子 3.html部分 &l...
    99+
    2022-11-13
  • 微信小程序怎么实现滚动加载更多功能
    这篇文章主要为大家展示了微信小程序怎么实现滚动加载更多功能,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“微信小程序怎么实现滚动加载更多功能”这篇文章吧。 需要用到的组件和apiscrol...
    99+
    2023-06-26
  • 微信小程序实现文字滚动
    本文实例为大家分享了微信小程序实现文字滚动的具体代码,供大家参考,具体内容如下 wxml: <view>显示完后再显示:</view> <view ...
    99+
    2022-11-11
  • 微信小程序实现无缝滚动
    本文实例为大家分享了微信小程序实现无缝滚动的具体代码,供大家参考,具体内容如下 wxml <view class="wrap-item" style='transform...
    99+
    2022-11-11
  • 微信小程序实现页面滚动监听效果
    抱歉,我无法提供具体代码示例。如果你想了解如何在微信小程序中实现页面滚动监听效果,可以通过以下步骤自己尝试:创建一个新的微信小程序项目。在 wxml 文件中编写页面结构,包括需要滚动监听的元素。在 wxss 文件中设置页面样式,包括滚动监听...
    99+
    2023-11-21
    页面滚动 微信小程序 监听效果
  • 微信小程序如何加载分包页面
    小程序分包加载实例{"pages": ["pages/index", "pages/shopcart"],"subpackages":&nb...
    99+
    2022-10-15
  • 微信小程序实现顶部固定底部分页滚动效果
    目录方案说明:思路说明:常见商品页效果:顶部banner+分类,下面商品列表。 方案说明: 方案1:整个页面滚动,滚动至某个位置fixed图中“顶部box2&rdquo...
    99+
    2022-11-13
  • 微信小程序实现弹出层禁止页面滚动
    本文实例为大家分享了微信小程序实现弹出层禁止页面滚动的具体代码,供大家参考,具体内容如下 效果图 是否随页面滚动 catchtouchmove true开启 return关闭 .w...
    99+
    2022-11-13
  • 微信小程序实现数字滚动动画
    本文实例为大家分享了微信小程序实现数字滚动效果的具体代码,供大家参考,具体内容如下 效果图 实现思路 1、为了实现数字的无限滚动效果,每个数字框的内部,其实包含了两组0~9的vie...
    99+
    2022-11-13
  • 微信小程序实现滚动条功能
    本文实例为大家分享了微信小程序实现滚动条的具体代码,供大家参考,具体内容如下 view <view class="conty">   <!-- 滚动字幕 --&g...
    99+
    2022-11-13
  • 微信小程序实现横向滚动条
    本文实例为大家分享了微信小程序横向滚动条的具体代码,供大家参考,具体内容如下 微信小程序scroll-view实现横向滑动滚动 效果图如下: 左右滑动效果展示如下: 实现代码: ...
    99+
    2022-11-13
  • 微信小程序实现触底加载
    现在来看小程序还没有使用pc端的那种分页格式,现在微信小程序上分页一般使用触底加载来实现分页的,下面就来分享一个触底加载的实现方式。 1.首先要从后端也就是服务器上获取分页的数据,如...
    99+
    2022-11-13
  • 微信小程序实现可以截断的瀑布流组件的示例代码
    瀑布流是一种常见的布局方式,实现的方式有许多,比如直接分两列,然后控制在左右两列加入元素;还有一种方式就是通过绝对定位的方式来放置两边。本文所要介绍的瀑布流不同于常规的,因为瀑布流中...
    99+
    2022-11-13
  • 微信小程序实现水平垂直滚动
    本文实例为大家分享了微信小程序实现水平垂直滚动的具体代码,供大家参考,具体内容如下 要点swiper内部套scroll-view 注意: 1.scroll竖直滚动高度不能给百分比要...
    99+
    2022-11-11
  • 微信小程序怎么实现无缝滚动
    这篇文章给大家分享的是有关微信小程序怎么实现无缝滚动的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下wxml<view class="wrap-item" ...
    99+
    2023-06-14
  • 微信小程序开发使用onreachBottom实现页面触底加载及分页
    目录 一 简要介绍一下onreachBottom事件  二  实例展示  三 遇到的一些问题 一 简要介绍一下onreachBottom事件         onreachBottom和onLoad以及onShow一样,都属于小程序的生...
    99+
    2023-10-09
    微信小程序 前端 小程序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作