微信小程序上拉加载,分页数据

目录

1.页面上拉加载

2.scroll-view上拉加载


1.页面上拉加载

微信小程序提供onReachBottom()上拉事件,链接:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#onReachBottom

onReachBottom()事件直接调用就可以。

在进行调用时要对当前页和总页数进行对比,判断是否要进行刷新数据

data: {
    list:'',//数据列表
    page:1,//请求的第几页
    size:10,  //每页多少条哦  
    totalpage:1,//总页数
  }, 
onShow() {
    this.getList()
  },
// 上拉事件
  onReachBottom(){
    if(this.data.page<=this.data.totalpage){
      this.getList()
    }
  },
 getList(){
    let page=this.data.page
     //接口参数
    let params={
      page: this.data.page,
      size: this.data.size
    }

    //获取数据的接口请求成功后
        page++
        this.setData({
          [`list[${this.data.page-1}]`]:items,//items:后台返回数据
          page:page,
          totalpage:res.data.totalpage
        })
        //... [`list[${this.data.page-1}]`]:items这种写法是为避免setData数据量过大,list数据在使用时需注意多循环一层

  },
<block class="" wx:for="{{list}}" wx:for-item="pitem" wx:for-index="pindex" wx:key="{{pindex}}">
   <view class="" wx:for="{{pitem}}" wx:key="{{index}}">{{item}}</view>
</block>

2.scroll-view上拉加载

请先看文档https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html

在这里需要用到lower-threshold, bindscrolltolower两个属性

lower-threshold:距底部/右边多远时,触发 scrolltolower 事件,默认值50

bindscrolltolower:滚动到底部/右边时触发

其实也没什么好说的,和页面上拉加载是一样的

注意:bindscrolltolower 到底部会一直触发,需要要定义一个变量来控制

.wxml

<scroll-view scroll-y="true" style="height: 100%;" lower-threshold="200" bindscrolltolower="scrollToLower">
</scroll-view>

.js

data: {
    list:'',//数据列表
    page:1,//请求的第几页
    size:10,  //每页多少条哦  
    totalpage:1,//总页数
    loading:false,//控制变量
  }, 
onShow() {
    this.getList()
  },
// scroll-view触底事件
  scrollToLower(){
    if(!this.data.loading && this.data.page<=this.data.totalpage){
      this.setData({
        loading:true
      })
      this.getList()
    }
  },
 getList(){
    let page=this.data.page
     //接口参数
    let params={
      page: this.data.page,
      size: this.data.size
    }

    //获取数据的接口请求成功后
        page++
        this.setData({
          [`list[${this.data.page-1}]`]:items,//items:后台返回数据
          page:page,
          totalpage:res.data.totalpage,
          loading:false
        })

  },

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的微信小程序分页实现代码示例: 1. 定义全局变量 在page的data中定义pageNum和pageSize两个变量用于分页: ``` data: { list: [], // 数据列表 pageNum: 1, // 当前页码 pageSize: 10, // 每页显示数量 hasMore: true // 是否还有更多数据 } ``` 2. 加载第一页数据 在onLoad事件中调用loadData方法加载第一页数据: ``` onLoad: function () { this.loadData(); } ``` loadData方法中设置请求参数并调用网络请求接口拉取数据,成功后将数据保存到list数组中: ``` loadData: function () { wx.showLoading({ title: '加载中...', }) var that = this; wx.request({ url: 'https://xxx.xxx.com/api/list', data: { pageNum: that.data.pageNum, pageSize: that.data.pageSize }, success: function (res) { if (res.data.code == 0) { var list = res.data.data.list; that.setData({ list: that.data.list.concat(list), hasMore: list.length >= that.data.pageSize, pageNum: that.data.pageNum + 1 }) } else { wx.showToast({ title: res.data.message, icon: 'none' }) } }, fail: function () { wx.showToast({ title: '网络异常', icon: 'none' }) }, complete: function () { wx.hideLoading(); } }) } ``` 3. 监听页面滚动事件 在页面的onPageScroll事件中监听页面滚动事件,当页面滚动到底部时加载下一页数据: ``` onPageScroll: function (e) { if (this.data.hasMore && e.scrollTop + e.windowHeight + 20 >= e.scrollHeight) { this.loadData(); } } ``` 4. 清空数据重新加载 如果需要重新加载数据,可以在页面中添加一个按钮,点击按钮时清空list数组并将pageNum重置为1,然后调用loadData方法加载第一页数据: ``` onReload: function () { this.setData({ list: [], pageNum: 1, hasMore: true }) this.loadData(); } ``` 以上是一个简单的微信小程序分页实现代码示例,需要注意的是,实际开发中需要根据具体需求进行适当调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值