小程序API —— 57 拓展 - 增强 scroll-view

目录

  • [1. 配置基本信息](#1. 配置基本信息)
  • [2. 实现上拉加载更多功能](#2. 实现上拉加载更多功能)
  • [3. 实现快速回到顶部功能](#3. 实现快速回到顶部功能)
  • [4. 实现下拉刷新功能](#4. 实现下拉刷新功能)

scroll-view 组件功能非常强大,这里使用 scroll-view 实现上拉加载和下拉刷新功能;

下面使用微信开发者工具来演示一下具体用法:

1. 配置基本信息

  • 在 pages/cate/cae.wxml 中添加页面框架:

    html 复制代码
    <scroll-view scroll-y class="scroll-y">
      <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>
    </scroll-view>
  • 在 pages/cate/cate.scss 中添加页面样式:

    css 复制代码
    .scroll-y {
      height: 100vh;
      background-color: #efefef;
    }
    
    view {
      height: 400rpx;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    view:nth-child(odd){
      background-color: skyblue;
    }
    
    view:nth-child(even){
      background-color: lightsalmon;
    }
  • 在 pages/cate/cate.js 中添加页面使用的数据:

    javascript 复制代码
    Page({
      data: {
        numList: [1, 2, 3]
      }
    })
  • 基本页面如下所示:

2. 实现上拉加载更多功能

  • 修改 pages/cate/cate.wxml 文件,在 scroll-view 中添加新的参数:

    html 复制代码
    <scroll-view
      scroll-y 
      class="scroll-y"
      lower-threshold="100"
      bindscrolltolower="getMore"
    >
      <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>
    </scroll-view>
  • 修改 pages/cate/cate.js 文件,添加 getMore 方法,用于下拉刷新:

    javascript 复制代码
    Page({
      data: {
        numList: [1, 2, 3]
      },
    
      // scroll-view 上拉加载更多事件的事件处理函数
      getMore(){
        wx.showLoading({
          title: '数据加载中...',
        })
    
        setTimeout(()=>{
          // 获取数组的最后一项
          const lastNum = this.data.numList[this.data.numList.length - 1]
    
          // 定义需要追加的元素
          const newArr = [lastNum + 1, lastNum + 2, lastNum + 3]
    
          this.setData({
            numList:[...this.data.numList, ...newArr]
          })
    
          wx.hideLoading()
        }, 1500)
      }
    })
  • 点击编译,可以看到使用 scroll-view 实现了下拉功能:

3. 实现快速回到顶部功能

如果我们下拉访问的数据比较多,如果想返回第一条数据,需要一直向上滑动,比较麻烦;在微信中有一个功能,如果是IOS可以点击顶部状态栏,如果是安卓可以点击标题栏,这两种方式可以使滚动条返回顶部,下面我们演示这个属性:

  • 在 pages/cate/cate.wxml 中的 scroll-view 中添加 enable-back-to-top 属性:

  • 点击顶部的编译,用手机微信扫描,在手机端下拉刷新,然后双击顶部的状态栏或者标题栏,就可以返回第一条数据位置:

4. 实现下拉刷新功能

  • 在 pages/cate/cate.wxml 中配置下拉刷新功能:

    html 复制代码
    <scroll-view
      scroll-y 
      class="scroll-y"
      lower-threshold="100"
      bindscrolltolower="getMore"
      enable-back-to-top
    
      refresher-enabled 
      refresher-default-style="black"
      refresher-background="f7f7f8"
      bindrefresherrefresh="refreshHandler"
      refresher-triggered="{{isTriggered}}"
    >
      <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>
    </scroll-view>
  • 在 pages/cate/cate.js 中配置下拉刷新方法:

    javascript 复制代码
    Page({
      data: {
        numList: [1, 2, 3],
        isTriggered: false  // 用于下拉刷新 loading 页面收回
      },
    
      refreshHandler () {
        wx.showToast({
          title: '下拉刷新...',
        })
    
        // 当用户上拉加载更多以后,如果用户进行了下拉刷新,需要将数据进行重置
        this.setData({
          numList: [1, 2, 3],
          isTriggered: false
        })
      },
    
      // scroll-view 上拉加载更多事件的事件处理函数
      getMore(){
        wx.showLoading({
          title: '数据加载中...',
        })
    
        setTimeout(()=>{
          // 获取数组的最后一项
          const lastNum = this.data.numList[this.data.numList.length - 1]
    
          // 定义需要追加的元素
          const newArr = [lastNum + 1, lastNum + 2, lastNum + 3]
    
          this.setData({
            numList:[...this.data.numList, ...newArr]
          })
    
          wx.hideLoading()
        }, 1500)
      }
    })
  • 点击编译,下拉刷新之后,可以看到,数据恢复到 3 个厨师数据,如下:

参考视频:尚硅谷微信小程序开发教程

相关推荐
知识分享小能手4 小时前
uni-app 入门学习教程,从入门到精通,uni-app 企业项目实战:鲁嗑瓜子项目开发知识点(9)
前端·javascript·学习·微信小程序·小程序·uni-app·vue
知识分享小能手4 小时前
uni-app 入门学习教程,从入门到精通,uni-app中uCharts组件学习((8)
vue.js·学习·ui·微信小程序·小程序·uni-app·echarts
社会底层无业大学生6 小时前
uniapp微信小程序简单表格展示
微信小程序·小程序·uni-app·vue·1024程序员节
從南走到北7 小时前
JAVA无人自助共享系统台球室源码自助开台约球交友系统源码小程序
java·微信·微信小程序·小程序·1024程序员节
2501_9159184110 小时前
iOS 26 查看电池容量与健康状态 多工具组合的工程实践
android·ios·小程序·https·uni-app·iphone·webview
2501_9159090611 小时前
iOS 架构设计全解析 从MVC到MVVM与使用 开心上架 跨平台发布 免Mac
android·ios·小程序·https·uni-app·iphone·webview
2501_9160088921 小时前
Web 前端开发常用工具推荐与团队实践分享
android·前端·ios·小程序·uni-app·iphone·webview
2501_9159214321 小时前
“HTTPS 个人化”实战,个人站点与设备调试的部署、验证与抓包排查方法
网络协议·http·ios·小程序·https·uni-app·iphone
菜鸟una1 天前
【微信小程序 + 消息订阅 + 授权】 微信小程序实现消息订阅流程介绍,代码示例(仅前端)
前端·vue.js·微信小程序·小程序·typescript·taro·1024程序员节
韩立学长1 天前
【开题答辩实录分享】以《租房小程序的设计和实现》为例进行答辩实录分享
java·spring boot·小程序