微信小程序上拉触底事件

这篇具有很好参考价值的文章主要介绍了微信小程序上拉触底事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是上拉触底事件

上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

二、监听上拉触底事件

在页面的.js文件中,通过onReachBottom()函数即可监听当前页面的上拉触底事件。

三、配置上拉触底距离

上拉触底距离指的是触发上拉触底事件时,滚动条距离页面底部的距离。

可以在全局或页面的 .json 配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离。

小程序默认的触底距离是 50px,在实际开发中,可以根据自己的需求修改这个默认值。

四、微信小程序上拉触底案例

1. 页面效果

微信小程序上拉触底事件,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-705935.html

2. 实现步骤

  1. 定义获取随机颜色的方法
  2. 在页面加载时初始化数据
  3. 渲染UI结构并且美化页面效果
  4. 在上拉触底时调用获取随机颜色的方法
  5. 添加loading提示效果
  6. 对上拉触底进行节流处理

3. 具体实现

  1. 定义获取随机颜色的方法
  getColors() {
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/api/color',
      method: 'GET',
      success: ( {data:res})=>{
       //  console.log(res.data);
        this.setData({
          colorList: this.data.colorList.concat(res.data)
        })
        console.log(this.data.colorList);
       
      },
    });

  },
  1. 在页面加载时初始化数据
onLoad(options) {
   this.getColors();
  },
  1. 渲染UI结构并且美化页面效果
<view wx:for="{{colorList}}" wx:key="index" class="num-item" style="background-color: rgba({{item}});">{{item}}</view>

/* pages/connect/connect.wxss */
.num-item {
  border: 1rpx solid #efefef;
  border-radius: 8rpx;
  line-height: 200rpx;
  margin: 15rpx;
  text-align: center;
  text-shadow: 0rpx 0rpx 5rpx #fff;
  box-shadow: 1rpx 1rpx 6rpx #aaa;
}
  1. 在上拉触底时调用获取随机颜色的方法
onReachBottom() {
    this.getColors();
  },
  1. 添加loading提示效果
    在调用getColors( )函数的内部,发送请求之前展示loading效果,发送请求获取数据之后隐藏loading效果。
  getColors() {
    // 需要展示loading效果
    wx.showLoading({
      title: '正在加载中...',
    }); // 展示loading效果
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/api/color',
      method: 'GET',
      success: ( {data:res})=>{
        console.log(res.data);
        this.setData({
          colorList: this.data.colorList.concat(res.data)
        })
        console.log(this.data.colorList);
       
      },
      complete: ()=>{
        wx.hideLoading();
      }
    });

  },
  1. 对上拉触底进行节流处理
  • 在data中定义isLoading节流阀:true 正在进行数据请求,false 当前没有进行任何数据请求
  • 在getColor()方法中修改isLoading节流阀的值:刚调用 设置为 true,在网络请求的complete中 重置为 false
  • 在onReachBottom中判断节流阀的值,从而对数据请求进行节流控制:true 阻止当前请求,false 可以发起数据请求
data: {
    colorList: [],
    isLoading: false
  },
  getColors() {
    this.setData({
      isLoading: true
    });
    // 需要展示loading效果
    wx.showLoading({
      title: '正在加载中...',
    }); // 展示loading效果
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/api/color',
      method: 'GET',
      success: ( {data:res})=>{
        console.log(res.data);
        this.setData({
          colorList: this.data.colorList.concat(res.data)
        })
        console.log(this.data.colorList);
       
      },
      complete: ()=>{
        wx.hideLoading();
        this.setData({
          isLoading: false
        })
      }
    });

  },

 onReachBottom() {
    if (this.data.isLoading===true) {
      return;
    }
    this.getColors();
  },

4. 完整.js文件代码

// pages/connect/connect.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    colorList: [],
    isLoading: false
  },
  getColors() {
    this.setData({
      isLoading: true
    });
    // 需要展示loading效果
    wx.showLoading({
      title: '正在加载中...',
    }); // 展示loading效果
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/api/color',
      method: 'GET',
      success: ( {data:res})=>{
        console.log(res.data);
        this.setData({
          colorList: this.data.colorList.concat(res.data)
        })
        console.log(this.data.colorList);
       
      },
      complete: ()=>{
        wx.hideLoading();
        this.setData({
          isLoading: false
        })
      }
    });

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
   this.getColors();
  },

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

  },

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

  },

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

  },

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

  },

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

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.isLoading===true) {
      return;
    }
    this.getColors();
  },

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

  }
})

到了这里,关于微信小程序上拉触底事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序——页面事件,.启用下拉刷新监听页面的下拉刷新事件,上拉触底事件,停止下拉刷新的效果

    下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。 启用下拉刷新有两种方式: a.全局开启下拉刷新 在 app.json 的window 节点中,将 enablePullDownRefresh 设置为 true. b.局部开启下拉刷新 在页面的.json 配置文件中,将 enablePull

    2024年01月25日
    浏览(55)
  • 小程序--下拉刷新/上拉触底

    一、什么是下拉刷新 下拉刷新 是移动端的专有名词,是指通过手指在屏幕上的下拉滑动操作,从而 重新加载页面数据 的行为 二、如何开启下拉刷新 ①全局开启下拉刷新 在app.json的windows节点中,将enablePullDownRefresh设置为true ②局部开启下拉刷新 在页面的.json配置文件中,将

    2024年02月14日
    浏览(46)
  • 小程序onReachBottom上拉触底/下拉刷新没有反应问题(日常踩坑)

    今天踩了一个坑,因为改之前同事写的页面,新功能需要用到上拉刷新获取更多数据,当我加上onReachBottom时不管怎么上拉都没有效果后来发现给了整个页面固定高度,这就导致onReachBottom不触发了,其实还有很多导致onReachBottom不触发的,比如使用scroll-view处理不当也会导致o

    2024年02月03日
    浏览(40)
  • 微信小程序下拉刷新获取数据和触底事件刷新实现

    说明:开启下拉刷新,然后设置窗口的背景色,方便观看。   说明:重新发起请求,并显示加载中   说明:当数据请求成功后,收回下拉刷新框并关闭加载中。 说明: onReachBottomDistance 定义了从页面底部的距离为50px,当滚动距离接近到这个值时,通常会触发一个函数或事件

    2024年02月16日
    浏览(43)
  • Taro微信小程序 实现下拉、触底刷新

    下拉刷新, 需要在页面的config文件中配置 enablePullDownRefresh: true, onReachBottomDistance: 50, backgroundTextStyle: \\\'dark\\\', 在代码中使用usePullDownRefresh, 当我们刷新页面时候会触发usePullDownRefresh方法,这里我们获取数据。

    2024年02月11日
    浏览(57)
  • 【微信小程序】列表滚动触底更新实现

    微信小程序开发系列 在微信小程序开发中经常遇到分页列表需要滚动到底部之后进行请求数据更新,下面介绍如何进行触底更新分页展示。使用到页面上拉触底事件的处理函数 onReachBottom 。 监听用户上拉触底事件,可以在app.json的window选项中或页面配置中设置触发距离onRea

    2024年02月05日
    浏览(36)
  • 6-微信小程序导航跳转、下拉触底、生命周期

    navigator 导航组件 官网传送门 导航到tabBar页面 在使用 navigator 跳转到tabbar页面需指定 url 和 open-type 属性, open-type 必须为 switchTab 例:从home页跳转到message wxml 导航到非tabBar页面 在使用 navigator 跳转到非tabbar页面需指定 url 和 open-type 属性, open-type 必须为 navigate 例:从home页跳

    2024年01月23日
    浏览(42)
  • 微信小程序触底加载scroll-view

    需求:有个固定高度的容器,实现容器里面的内容触底加载 1、内容盒子的高度 2、盒子里内容的总高度 3、滚动条的scrollTop 触底加载的原理就是 当里面的容器触底的时候进行分页,请求接口合并数据 公式 盒子的高度+滚动条的scrollTop = 内容高度 使用原生的计算方法比较麻烦

    2024年02月09日
    浏览(46)
  • uniapp-微信小程序关于禁止ios自带的下拉上拉(橡皮筋回弹)

    先说出现的问题,如下图所示,下拉出现空白,上拉也会出现一段空白。 要求:这个页面不能拉动,并且保证 如果内容超出,可以正常滑动,内容不超出也禁止ios自带的拉动    解决办法:分两步 第一步 :在pages.json里添加这行代码,如下图所示, 但是 如果你的页面内容很

    2024年02月12日
    浏览(49)
  • web之移动端实现触底和触顶功能、微信小程序、置顶、置底、触发、uniApp、onReachBottom、onPageScroll

    触底 onReachBottom 监听用户上拉触底事件。 可以在 app.json 的 window 选项中或页面配置中设置触发距离 onReachBottomDistance 。 在触发距离内滑动期间,本事件只会被触发一次。 触顶事件 onPageScroll(Object object) 监听用户滑动页面事件。 参数 Object object 的属性为 scrollTop ;类型为 Numb

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包