微信小程序下拉刷新获取数据和触底事件刷新实现

一、下拉刷新

1.json文件

说明:开启下拉刷新,然后设置窗口的背景色,方便观看。

javascript 复制代码
  "enablePullDownRefresh": true,
  "backgroundColor":"#FFC0CB"

2. js文件

说明:重新发起请求,并显示加载中

javascript 复制代码
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getData()
    wx.showLoading({
      title: '加载中',
    })
  },

3.js文件

说明:当数据请求成功后,收回下拉刷新框并关闭加载中。

javascript 复制代码
      success: ({data}) => {
        // 数据加载成功,关闭下拉刷新
        wx.stopPullDownRefresh()
        // 成功后并关闭加载中
        wx.hideLoading()
      this.setData({
        arrList:data.data
      })
      },

二、触底事件刷新

2.json文件

说明:onReachBottomDistance定义了从页面底部的距离为50px,当滚动距离接近到这个值时,通常会触发一个函数或事件来加载更多内容。

javascript 复制代码
  "onReachBottomDistance": 50

说明:当距离页面底部为50px的时候,重新发起数据请求,并添加一个显示导航条加载动画(转态遮罩)

javascript 复制代码
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
   this.getData()
  //  在当前页面显示导航条加载动画,是一个状态遮罩
   wx.showNavigationBarLoading()


  },

说明:改造了getData()函数,将以前的数据和现在获取的数据进行相加。以此下拉获取更多的信息。

javascript 复制代码
  getData() {
    wx.request({
      url: '**',
      method:"GET",
      success: ({data:res}) => {
        // 数据加载成功,关闭下拉刷新
        wx.stopPullDownRefresh()
        // 成功后并关闭加载中
        wx.hideLoading()
        wx.hideNavigationBarLoading()
        let oldData=this.data.arrList
        let newData=oldData.concat(res.data)
      this.setData({
        arrList:newData
      })
      }
    })
  },

三、源码

3.1 xml文件

html 复制代码
<!-- 简单的前台页面 -->
<view>
<block wx:for="{{arrList}}" wx:key="id">
<view>猫儿</view>
<image src="{{item.url}}" mode=""/>
</block>
</view>

3.2 js文件

javascript 复制代码
// pages/refresh/refresh.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    arrList:[]
  },
  getData() {
    wx.request({
      url: '**',
      method:"GET",
      success: ({data:res}) => {
        // 数据加载成功,关闭下拉刷新
        wx.stopPullDownRefresh()
        // 成功后并关闭加载中
        wx.hideLoading()
       //关闭导航加载
        wx.hideNavigationBarLoading()
        let oldData=this.data.arrList
        let newData=oldData.concat(res.data)
      this.setData({
        arrList:newData
      })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getData()
    wx.showLoading({
      title: '加载中',
    })
  },

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

  },

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

  },

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

  },

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

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getData()
    //清空数据,重新获取数据(归零)
    this.setData({
      arrList:[]
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
   this.getData()
  //  在当前页面显示导航条加载动画,是一个状态遮罩
   wx.showNavigationBarLoading()


  },

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

  }
})
相关推荐
無名路人10 分钟前
小程序点餐页吸顶滚动
前端·微信小程序·ai编程
游戏开发爱好者81 小时前
使用Fiddler设置HTTPS抓包诊断Power Query网络问题
android·ios·小程序·https·uni-app·iphone·webview
七月的冰红茶2 小时前
【开发工具】使用cursor实现点单小程序
小程序
Greg_Zhong2 小时前
微信小程序中使用canvas实现雷达图及标签对角显示(实现雷达图标签的标准做法)
微信小程序·小程序canvas实现雷达图·标签不通过canvas绘制
码农客栈3 小时前
小程序学习(十八)之“骨架屏”
小程序
棋宣5 小时前
uni-app编译到微信小程序中,父传子props首次传递数据不接收的bug
微信小程序·uni-app·bug
kyh10033811206 小时前
微信小程序摇骰子功能实现|含源码
微信小程序·小程序·摇骰子小游戏·摇色子源码
程序鉴定师1 天前
西安App开发推荐与业界认可的优秀实践
大数据·小程序
纤纡.1 天前
HarmonyOS 鸿蒙 ArkTS 实战:从零开发生肖集卡抽奖小程序
华为·小程序·harmonyos·deveco studio
Lsx_1 天前
H5 嵌入微信 / 支付宝 / 抖音小程序 WebView:调用原生能力完整方案
前端·微信小程序·webview