微信小程序开发系列(三十三)·如何通过scroll-view实现上拉加载和下拉刷新

news2024/11/23 21:56:35

        找到profile.wxml文件,使用 scroll-view 组件,实现垂直滚动的效果,暂时先设定为横向滚动,在创建一个class类:

<scroll-view scroll-y="true" class="scroll-y">

</scroll-view>

ps:之前的代码已被注释掉,每章代码(微信小程序开发系列)都是独立演示的。

页面都是随机的,不用一定要同种页面命名,主要在相同后缀。

        找到profile.scss文件,对其进行配置,使其占满整个屏幕,并且设置颜色为:

.scroll-y{
  height: 100vh;
  background-color: #efefef;
}

        找到profile.js文件,创建一个数组:

Page({

  data:{
    numList:[1,2,3]
  }

})

        找到profile.wxml文件,对数组进行显示:

<scroll-view scroll-y="true" class="scroll-y">

  <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>

</scroll-view>

        在这里出现了一个小问题,在profile.js生成的数组文件中,1、2、3是需要空格隔开的,按照上面给的代码可能会不显示,更改完:

Page({

  data:{
    numList:[1, 2, 3]
  }

})

        此时运行:

        找到profile.scss文件,给view展现的样式进行配置,按照弹性布局垂直水平居中:


view{
  height: 400rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

        给展现出来的奇偶界面设定颜色便于区分:

// 奇数页
view:nth-child(odd){
  background-color: lightskyblue;
}

// 偶数页
view:nth-child(even){
  background-color: lightslategrey;
}

先来了解

lower-threshold="100":这个属性用于设置距离底部多少距离时触发触底事件。在滚动视图中,当距离底部的距离小于或等于 lower-threshold 设置的值时,会触发触底事件。


bindscrolltolower="getMore":这个属性是用来绑定触底事件的处理函数。当滚动视图滚动到设定的阈值(由 lower-threshold 决定)时,触发触底事件,然后会调用名为 getMore 的处理函数来执行相应的逻辑。

         找到profile.wxml文件,将上述两个函数加入scroll-view中,其中触底事件的处理函数命名为 getMore :

<scroll-view 
  scroll-y="true" 
  class="scroll-y"

  lower-threshold="100"
  bindscrolltolower="getMore"

>

  <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>

</scroll-view>

        找到profile.js文件,在Page文件中加入getMore():

  // scroll-view 上拉加载更多事件的事件处理函数
  getMore(){

    // 产品需求:
    // 当用户上拉需要数字进行累加

    // 当用户上拉加载希望对数字进行累加,每次累加三个数字
    // 怎么进行累加
    // 获取目前数组中最后一项n,n+1,n+2,n+3

    // 增加一个提示框
    wx.showLoading({
      title: '数据加载中...',
    })

    // 设定一个定时器。在定时到期以后执行注册的回调函数
    setTimeout(() => {
      // 获取数组的最后一项
      const lastNum = this.data.numList[this.data.numList.length-1]
      // 需要追加的元素
      const newArr = [lastNum + 1,lastNum + 2,lastNum +3]

      // 合并初始数组以及追加后的数组
      // 例如初始数组[1,2,3]
      // 追加后[1,2,3,4,5,6] 
      this.setData({
        numList: [...this.data.numList,...newArr]
      })

      // 隐藏 loading 提示框
      wx.hideLoading()
      // 通过更改数字进行更改延时
    },100
    )
  }

         此时就可以实现页面的加载:

enable-back-to-top="true" 是 scroll-view 组件的一个属性,用于启用“回到顶部”功能。
当你设置了 enable-back-to-top="true" 后,在滚动视图中将会出现一个“回到顶部”的按钮。当用户滚动页面时,如果滚动距离超过一定阈值(通常是页面高度的一半),则会显示这个按钮。当用户点击该按钮时,滚动视图会自动滚动回顶部位置。

         找到profile.wxml文件: 

<scroll-view 
  scroll-y="true" 
  class="scroll-y"

  lower-threshold="100"
  bindscrolltolower="getMore"
  enable-back-to-top
>

  <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>

</scroll-view>

refresher-enabled:这个属性用于启用下拉刷新功能。当设置为 true 时,用户可以通过在 scroll-view 中向下拉动来触发下拉刷新操作。

refresher-default-style="black":这个属性用于设置下拉刷新显示的默认样式。在这里,设置为 "black" 表示下拉刷新时显示为黑色样式。

refresher-background="#f7f7f8":这个属性用于设置下拉刷新的背景颜色。在这里,设置为 #f7f7f8,表示下拉刷新区域的背景色为浅灰色。

bindrefresherrefresh="refreshHandler":这个属性用于绑定下拉刷新事件的处理函数。当用户下拉刷新时,会触发名为 refreshHandler 的处理函数来执行相应的逻辑,比如加载最新数据或者其他操作。

<scroll-view 
  scroll-y="true" 
  class="scroll-y"

  lower-threshold="100"
  bindscrolltolower="getMore"
  enable-back-to-top

  refresher-enabled
  refresher-default-style="black"
  refresher-background="#f7f7f8"
  bindrefresherrefresh="refreshHandler"
>

  <view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>

</scroll-view>

        找到profile.js文件:

  refreshHandler(){

    wx.showToast({
      title: '下拉刷新...'
    })


    this.setData({
      numList:[1, 2, 3]
    })
  },

        先加载多个数据: 

        下拉刷新后会发,数据恢复到设置的1、2、3三个页面:

        不过在这里我们会发现,下拉后不能自动回弹回去,我们可以加入

refresher-triggered:这是用于标识下拉刷新是否被触发的属性。当 refresher-triggered 的值为 true 时,表示下拉刷新已经被触发,可以执行相应的刷新操作

<scroll-view 
  scroll-y="true" 
  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>

        其中双大括号,是因为我们需要给其赋值为布尔类型,找到profile.js文件,将this.setData的代码改为:

    this.setData({
      numList:[1, 2, 3],
      isTriggered:false
    })

        此时的代码就能个正常的回弹了。

微信小程序开发_时光の尘的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS3病毒病原体图形特效

CSS3病毒病原体图形特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 CSS3病毒病原体图形特效代码

3.Windows下安装MongoDB和Compass教程

Windows下安装MongoDB 总体体验下来&#xff0c;&#xff0c;要比MySQL的安装简单了许多&#xff0c;没有过多的配置&#xff0c;直接就上手了&#xff01; 1、下载 进入官方的下载页面https://www.mongodb.com/try/download/community&#xff0c;如下选择&#xff0c;我选…

论文阅读——GeoChat(cvpr2024)

GeoChat : Grounded Large Vision-Language Model for Remote Sensing 一、引言 GeoChat&#xff0c;将多模态指令调整扩展到遥感领域以训练多任务会话助理。 遥感领域缺乏多模式指令调整对话数据集。受到最近指令调优工作的启发&#xff0c;GeoChat 使用 Vicuna-v1.5和自动化…

Mr-Robot1靶场练习靶场推荐小白入门练习靶场渗透靶场bp爆破wordpress

下载链接&#xff1a; Mr-Robot: 1 ~ VulnHub 安装&#xff1a; 打开vxbox&#xff0c;菜单栏----管理----导入虚拟电脑 选择下载完的ova文件&#xff0c;并修改想要保存的位置&#xff08;也可以保持默认位置&#xff09; 导入完成后可以根据自己的情况去配置网络链接方式 完成…

【数据结构和算法初阶(C语言)】二叉树铺垫--栈帧的创建与销毁--细节全解

前言&#xff1a; 学习这么久以来&#xff0c;可能有很多疑问&#xff1a;局部变量怎么创建的&#xff1f;为什么局部变量的值是随机的&#xff1f;函数是怎么传参的&#xff1f;传参的顺序是怎么样的&#xff1f;形参和实参是什么样的关系&#xff1f;函数调用是怎么做的&…

Redis-2 Redis基础数据类型与基本使用

高级Redis应用进阶 一站式Redis解决方案-Redis-2 Redis基础数据类型与基本使用 源代码在GitHub - 629y/food-social-contact-parent: redis项目-美食社交APP 1. Redis基本数据类型 1.字符串&#xff08;strings&#xff09; set username zhangsan get username mset age 18 …

阿里云-零基础入门推荐系统 【特征工程】

文章目录 赛题介绍评价方式理解赛题理解制作特征和标签&#xff0c; 转成监督学习问题导包df节省内存函数训练和验证集的划分获取历史点击和最后一次点击读取训练、验证及测试集读取召回列表读取各种Embedding读取文章信息读取数据对训练数据做负采样将召回数据转换成字典制作与…

spring boot集成redis实现共享存储session

spring boot集成redis实现共享存储session redis实现共享存储session 首先下载redis,我下载的版本是5.0.14,目前官网貌似找不到5.x版本&#xff0c;可以自行去网上寻找。我这里的springboot版本是2.6.4引入redis依赖 <!-- https://mvnrepository.com/artifact/org.spring…

麒麟系统Redis7.2哨兵集群部署

redis哨兵集群部署 1、原理 Redis 哨兵模式是指在 Redis 集群中,有一组专门的进程(即哨兵进程)负责监控主节点和从节点的状态,并在发现故障时自动进行故障转移,以保证 Redis 集群的高可用性。 Redis 提供了哨兵的命令,哨兵命令是一个独立的进程,哨兵进程会周期性地向主…

YOLOv9改进策略:注意力机制 | SimAM(无参Attention),效果秒杀CBAM、SE

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;SimAM是一种轻量级的自注意力机制&#xff0c;其网络结构与Transformer类似&#xff0c;但是在计算注意力权重时使用的是线性层而不是点积 yolov9-c-CoordAtt summary: 972 layers, 51024476 parameters, 510…

“一键秒变!PNG到JPG,图片批量转换新体验“

在这个数字时代&#xff0c;图片已成为我们生活与工作中不可或缺的一部分。无论是社交媒体上的个人分享&#xff0c;还是商务场合中的项目展示&#xff0c;一张好的图片往往能起到事半功倍的效果。然而&#xff0c;面对堆积如山的PNG图片&#xff0c;你是否曾感到力不从心&…

Linux-centos如何搭建yum源仓库

1.本地搭建&#xff08;无需连接外网&#xff09; 1.1检查网络配置&#xff0c;及网络连接 打开虚拟机&#xff0c;点击【编辑——虚拟网络编辑器】 点击【仅主机模式】查看子网段是否和局内IP匹配 进入局内&#xff0c;查看网络IP是否在你上述设置的网段内&#xff0c;如果不…

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

SQLiteC/C++接口详细介绍之sqlite3类(十四)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十三&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十五&#xff09; 43.sqlite3_preupdate_hook sqlite3_preup…

【工具】一键生成动态歌词字幕

那眼神如此熟悉 让人着迷无力抗拒 一次又一次相遇 在眼前却遥不可及 命运总爱淘气 将一切都藏匿 曾有你的回忆 无痕迹 若不是心心相吸 又怎么会一步一步靠近 &#x1f3b5; 董真《思如雪》 下载LRC歌词 https://www.musicenc.com/article/50287.htmlhttp…

Android 系统的启动过程

Android 系统的启动流程&#xff1a; RomBoot&#xff08;只读存储器引导程序&#xff09;&#xff1a;这是设备上电时运行的初始软件。RomBoot执行基本的硬件初始化&#xff0c;确保硬件处于可以运行后续启动阶段的状态。这一阶段非常重要&#xff0c;因为它为整个启动过程奠定…

VMwareWorkstation16与Ubuntu 22.04.6 LTS下载与安装

一、准备工作 VMware Workstation Pro 16官网下载&#xff1a; https://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0。下载需要账号登录。 二、安装 双击exe文件稍等一会会弹出安装程序&#xff0c;如图 这…

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到…

高效备考2025年AMC8竞赛:吃透2000-2024年600道真题(免费送题)

我们继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的考生来说&#xff0c;吃透AMC8历年真题是备考更加科学、有效的方法之一。 即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么…

爬虫学习 Scrapy中间件代理UA随机selenium使用

目录 中间件UA、代理处理---process_requestUA随机 代理处理seleniumscrapy 中间件 控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 ROBOTSTXT_OBEY FalseLOG_LEVEL "WARNING"运行 scrapy crawl baidu middle…