微信小程序实现上拉触底加载数据

微信小程序有一个页面上拉触底事件的处理函数onReachBottom(),就在这个函数里去做上拉加载即可,废话不多说,上完整代码。

wxml:

 <view wx:for="{
    
    {updateList}}" wx:key="index" class="list"> 
    .....此处为数据渲染过程,已省略
  </view>
  <view class="noData">
    <text class="noData_text">暂无更多数据</text>
  </view>

js代码:

 data: {
    
    
    // 信息展示列表
    updateList:[],
    // 分页参数
    pageBean:{
    
    
      page:1,
      pageSize:4,
    },
    // 下拉加载完后是否还有数据
    noData:false
  },
  // 查询数据
  getList(){
    
    
    let pageBean = this.data.pageBean
    wx.showLoading({
    
    
      title:'加载中...'
    })
    recent(pageBean).then(res=>{
    
    
      if (res.data.code == 200) {
    
    
        this.setData({
    
    
          updateList:res.data.data.records
        })
      }
    wx.hideLoading(); // 请求结束关闭加载状态
    })
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    
    
    this.getList();
  },
  
 /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    
    
    let pageSize = this.data.pageBean.pageSize;
    let page = this.data.pageBean.page
    let updateList = this.data.updateList;
    // 当页面上拉触底后,页码增加
    this.setData({
    
    
      'pageBean.page':++page
    })
    let pageBean = {
    
    
      page:page,
      pageSize:pageSize
    }
    // console.log(pageSize,page,pageBean);
    wx.showLoading({
    
    
      title:'加载中...',
      mask:true // 相当于节流阀,当数据在加载时,不允许重复发起请求
    })
    recent(pageBean).then(res=>{
    
    
      if (res.data.code == 200) {
    
    
      // 对返回的数组长度做一个判断,防止数据不停的push到数组中
        if (res.data.data.records.length == 0) {
    
    
          this.setData({
    
    
            noData:true
          })
        }else{
    
    
          res.data.data.records.forEach(item=>{
    
    
            updateList.push(item)
            console.log(item);
          })
          this.setData({
    
    
            updateList:updateList
          })
        }
      }
      wx.hideLoading();
    })
  },

效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_56733569/article/details/130088370