小程序上拉加载下一页

const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    articles: '',
    page: 1,
    category_id: '',
    keywords: '',
    article_end_active: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this
    var category_id = null
    var keywords = null
    var url = 'app/articles/list?page=' + that.data.page
    if (options.category_id != null) {
      that.data.category_id = options.category_id
      url = 'app/articles/list?page=' + that.data.page + '&category_id=' + options.category_id
    } else if (options.keywords != null) {
      that.data.keywords = options.keywords
      url = 'app/articles/list?page=' + that.data.page + '&keywords=' + options.keywords
    }

    wx.request({
      url: app.globalData.globalUrl + url,
      success: res => {
        if (res.data.error_code == 0) {
          var result = res.data.data
          that.setData({
            articles: result.articles,
            article_end_active: that.data.article_end_active
          })
        }
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    var that = this
    that.data.page = that.data.page + 1
    var url = 'app/articles/list?page=' + that.data.page
    if (that.data.category_id != null) {
      url = 'app/articles/list?page=' + that.data.page + '&category_id=' + that.data.category_id
    } else if (that.data.keywords != null) {
      url = 'app/articles/list?page=' + that.data.page + '&keywords=' + that.data.keywords
    }
    wx.request({
      url: app.globalData.globalUrl + url,
      success: res => {
        if (res.data.error_code == 0) {
          var result = res.data.data
          if (result.articles.length < 20) {
            that.data.article_end_active = 'active'
          }
          that.setData({
            articles: that.data.articles.concat(result.articles),
            article_end_active: that.data.article_end_active
          })
        }
      }
    })
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  }
})

### 微信小程序实现上拉加载更多数据功能 在微信小程序中,`onReachBottom` 生命周期函数用于检测页面是否滚动到了底部。当用户滚动至页面最底端时会触发此事件,从而可以用来请求并展示更多数据[^1]。 #### 配置 `onReachBottomDistance` 为了优化用户体验,在距离页面真正触底前就提前触发加载操作,可以在 `json` 文件里设置 `onReachBottomDistance` 参数来定义触发距离。例如: ```json { "usingComponents": {}, "onReachBottomDistance": 50 } ``` 上述配置表示当页面剩余未显示的内容高度小于等于50px时即触发 `onReachBottom` 函数调用[^2]。 #### JavaScript逻辑处理 下面是一段简化版的JavaScript代码片段,展示了如何利用 `onReachBottom()` 方法获取新一批商品列表项,并更新视图层的数据绑定变量以追加新的条目到现有列表之中。 ```javascript Page({ data: { goodsList: [], // 存储已有的商品信息数组 page: 1, // 当前页码,默认第一页 hasMoreData: true // 是否还有更多数据可加载标志位 }, onLoad() { this.fetchGoods(); }, onReachBottom() { if (!this.data.hasMoreData) return; console.log('尝试加载一页'); this.setData({page: this.data.page + 1}); this.fetchGoods(); }, fetchGoods() { wx.request({ url: 'https://example.com/api/goods', // 请求接口地址 method: 'GET', data: {page: this.data.page}, success(res){ const newData = res.data.list || []; if (newData.length === 0) { this.setData({hasMoreData: false}); return; } this.setData({ goodsList: [...this.data.goodsList, ...newData] }); } }) } }) ``` 这段脚本首先初始化了一个空的商品列表以及当前查询起始位置(默认为第一页)。每当页面初次载入或是达到底部时都会发起一次网络请求去服务器端取回指定数量的新记录;如果返回为空,则停止继续尝试加载后续分页内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值