微信小程序触底加载scroll-view

微信小程序触底加载 scroll-view

在这里插入图片描述

了解什么是触底加载?

需求:有个固定高度的容器,实现容器里面的内容触底加载
1、内容盒子的高度
2、盒子里内容的总高度
3、滚动条的scrollTop
触底加载的原理就是 当里面的容器触底的时候进行分页,请求接口合并数据

公式
盒子的高度+滚动条的scrollTop = 内容高度

使用原生的计算方法比较麻烦 因此市面上有很多关于触底加载的插件
我们这里使用的是 uni-app 里面的 scroll-view

scroll-view 属性

  • scroll-x:false - 允许横向滚动
  • scroll-y:false - 允许纵向滚动
  • show-scrollbar: 距顶部/左边多远时(单位px),触发 scrolltoupper 事件
  • scroll-top:false - 控制是否出现滚动条
  • @refresherrefresh: - 自定义下拉刷新被触发
  • @scroll: - 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
  • @scrolltoupper:滚动到顶部/左边,会触发 scrolltoupper 事件
  • @scrolltolower:滚动到底部/右边,会触发 scrolltolower 事件
  • refresher-threshold:45 - 设置自定义下拉刷新阈值

实战上代码

亿点小知识:使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height;使用横向滚动时,需要给<scroll-view>添加white-space: nowrap;样式。

页面 根据不同的需求开启不同的属性
<scroll-view
		 class="car-list"
		 refresher-enabled="true"
		:refresher-triggered="flag"
		@refresherrefresh="refresherrefresh"
		@scrolltolower="scrolltolower"
		scroll-y="true"
		>
		<view class="item-msg" v-for="(item, index) in list" :key="item.id" >
		{{item.name}}
		</view>
</scroll-view>
js 这里的逻辑大家可以根据自己的接口规则进行变动 主要的是看代码的逻辑

如有更好的代码逻辑 可以私信我 一起讨论

data() {
			return {
				list: [],
				flag:false,
				query: {
					per_page: 10,
					page: 1,
				},
				total:0,
			}
		},
methods: {
			refresherrefresh(){ // 下拉刷新
				this.flag = true // 开启下拉刷新
				this.query = {
					per_page: 10,
					page: 1,
				}
				this.list = []
				this.refreshFun()
				setTimeout(() => {
					this.flag = false; // 关闭下拉刷新
				}, 1000);
			},
			// 每次刷新需要用到的方法
			refreshFun(){
				if(this.index == 1 || this.index == 2){ // 判断是否需要传参 启用/禁用
						this.query.enabled = this.index == 1 ? 1 : 0
						this.init()
				}else{
						if(this.query.enabled == 1 || this.query.enabled == 0){
							delete this.query.enabled
						}
						this.init()
				}
			},
			// 触底加载
			scrolltolower () {
					const { list, total,query } = this
					if (list.length === total) return // 判断是否加载全部
					query.page++ // 触底加载 ++
					this.refreshFun()
			},
			async init () { // 数据渲染
				let { query } = this
				uni.showLoading() // 加载中
				let data = await 接口(query)
				uni.hideLoading() // 加载完成
				if ( data.code === SUCCESS ) {
					this.total = data.meta.total // 获取总数
					this.list = this.list.concat(data.data) // 合并数据
				}
			},
}

在这里插入图片描述

以上就是微信小程序触底加载感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ansible-playbook-roles安装lnmp

使用roles安装lnmp 1、准备四台主机 192.168.142.10 192.168.142.20 192.168.142.30 192.168.142.40 2、10作为ansible管理端 首先ssh连接剩下三台主机 3、vim/etc/ansible/hosts 添加[nginxservers]配置nginx ip,[phpservers]php ip,[mysqlservers]mysql ip 4、cd /etc/ansibl…

0基础学习VR全景平台篇第42篇:编辑器底部菜单-分组管理

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;底部菜单—分组管理功能操作。 功能位置示意 一、本功能将用在哪里&#xff1f; 分组管理&#xff0c;指观看者可点击不同分组&#xff0c;查看不同类型全景内容…

【ROS】ROS+Gazebo强化学习:训练

1、安装ROS1 【ROS】Ubuntu20.04安装ROS1 2、安装Anaconda 【AI】PyTorch入门&#xff08;一&#xff09;&#xff1a;通过Anaconda安装PyTorch 【PyThon】Anaconda常用命令 3、源码下载 使用论文 Goal-Driven Autonomous Exploration Through Deep Reinforcement Learnin…

Springboot整合Camunda工作流引擎实现审批流程实例

环境&#xff1a;Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…

Redis-缓存

新增或者更新数据时,创建以后顺便存到redis中去【维护缓存】 获取的时候先从redis缓存中拿数据 如果拿数据的时候为空,则到数据库中拿数据,后再存到redis缓存中去 大量的商品【包括冷门商品】都进行上面的缓存,那么就很耗内存 针对每个数据进行缓存的时候 维护一个过期时间…

计算服务资源调度管理

文章目录 前言总体架构“ULT”和“KLT”抽象“内核”“容器”“虚容器” 内存抽象虚拟存储&#xff08;容器调用&#xff09; 多机器调度 前言 今天复习了一下操作系统&#xff0c;系统过了一下&#xff0c;感觉还有点时间&#xff0c;那么顺便来讨论一下&#xff0c;关于我的…

使用VScode + clangd 阅读 c/c++ 源码环境搭建

使用Vscode clangd 阅读c/c源码 一、需求 在嵌入式软件开发的工作中&#xff0c;我们常常需要分析C/C代码&#xff0c;比如linux kernel 的代码&#xff0c;而公司的代码一般都会存放在服务器中&#xff0c;服务器一般是linux&#xff0c;且无法联网&#xff0c;我们只能通过…

qt creator使用问题

qt creator 多版本安装需要(单独下载qtcreator安装版本)&#xff0c;安装目录默认在Qt目录下&#xff08;qt的sdk也在qt目录下&#xff09; 编译过程中遇到一些很奇怪问题&#xff0c;建议优先重新编译。 issue qtcreator inappropriate for the inferior 构建套件&#x…

我准备蓝桥杯的这一年

我准备蓝桥杯的这一年 文章目录 我准备蓝桥杯的这一年起步和目标确定渐入佳境焦虑疲惫&#xff0c;一天又一天国赛我来力总结 我将我这段 流水账分为四个阶段。谨以此文&#xff0c;祭奠我这一年来的焦虑、白发~ &#xff0c;最终也取得了预期的成绩。不知未来再看此章会作何感…

网络编程重点

1>OIS 7层模型 用户空间&#xff1a;应用层 7>提供各种网络接口 表示层 6>数据表示&#xff0c;加密与压缩 会话层 5>主机之间会话管理 内核空间&#xff1a;传输层 4&…

【Java基础学习打卡05】命令提示符

目录 前言一、命令提示符是什么二、命令提示符常用命令1.打开命令提示符2.命令演示3.常用命令 总结 前言 知道命令提示符是什么&#xff0c;熟练打开命令提示符&#xff0c;熟练使用常用命令&#xff0c;并自行尝试其他命令。本文只是对命令提示符进行简单介绍和使用。 一、命…

chatgpt赋能python:Python截取指定字符操作:让你的SEO优化变得更简单

Python截取指定字符操作&#xff1a;让你的SEO优化变得更简单 在SEO优化中&#xff0c;截取指定字符是一个非常常见的操作。Python作为一款开源的高级编程语言&#xff0c;提供了许多方便的函数和方法来处理文本操作&#xff0c;包括截取指定字符。在本文中&#xff0c;我们将…

在线DDL操作踩坑记录

官方地址&#xff1a;GitHub - github/gh-ost: GitHubs Online Schema-migration Tool for MySQL 使用ghost方式在线对mysql表进行ddl ghost原理&#xff1a; 要对表A进行DDL&#xff0c;在主库建立一个ghost表 A1在表A1上进行alter操作伪装成一个mysql的从库&#xff0c;监…

SpringCloud Alibaba-Sentinel

SpringCloud Alibaba-Sentinel 1. Sentinel核心库1.1 Sentinel介绍1.2 Sentinel核心功能1.2.1 流量控制1.2.2 熔断降级 2 Sentinel 限流熔断降级2.1 SentinelResource定义资源2.1.1 blockHandler/blockHandlerClass2.1.2 fallback/fallbackClass2.1.3 defaultFallback 2.2 Sent…

Java中不支持多重继承原因

在 Java 中回答这种棘手问题的关键是准备好相关主题, 以应对后续的各种可能的问题。 这是非常经典的问题&#xff0c;与为什么 String 在 Java 中是不可变的很类似; 这两个问题之间的相似之处在于它们主要是由 Java 创作者的设计决策使然。 为什么Java不支持类多重继承, 可以考…

ChatGPT将改变教育,而不是摧毁它

01 学校和大学的反应迅速而果断 就在 OpenAI 于 2022 年 11月下旬发布ChatGPT 的几天后&#xff0c;该聊天机器人被广泛谴责为一种免费的论文写作、应试工具&#xff0c;它很容易在作业中作弊。 美国第二大学区洛杉矶联合大学立即阻止了OpenAI网站从其学校网络访问。其他人很…

k8s的service资源类型有ClusterIP、Nodeport、ExternalName、LoadBalancer、Headless(None)

1. ClusterIP 是什么 ClusterIP 是在所有节点内生成一个虚拟IP&#xff0c;为一组pod提供统一的接入点&#xff0c;当service存在时&#xff0c;它的IP地址和端口不会发生改变&#xff0c;客户端通过service的ip和端口建立连接&#xff0c;由service将连接路由到该服务的任意一…

数据结构——广义表

文章目录 前言二、特殊矩阵的压缩存储数组的存储结构和实现按行优先存储按列优先存储 矩阵的压缩存储稀疏矩阵 广义表 总结 前言 数组&#xff0c;数组的压缩存储&#xff0c;广义表 二、特殊矩阵的压缩存储 数组的存储结构和实现 对于多维数组&#xff0c;可以分为按行优先…

spring 反射,BigDecimal,自定义注解的使用(aop)

反射 利用反射调用它类中的属性和方法时&#xff0c;无视修饰符。 获取Class类的对象&#xff08;三种方式&#xff09; Class.forName(“全类名”) &#xff08;推荐使用&#xff09;类名.class对象.getClass() 反射获取构造方法Constructor<?>[] getConstructors()…

父亲节礼物:用Python编写一个小型游戏

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 安装必要的库 绘制游戏界面 添加游戏元素 为游戏添加交互性 结论 一、父亲节的来历简介 二…