移动端上拉分页加载更多(h5,小程序)

1.h5,使用原生方式监听页面滚动上拉分页加载更多

<template><div></div>
</template><script>
export default {data() {return {loadflag: true,maxpages: 0, //最大页码currentpage: 0, //当前页listData: [],config: {page: 1,pageSize: 15,total: 0,pages: 0,},}},created() {this.getList()window.addEventListener('scroll', this.handleScroll, true)},methods: {handleScroll() {const _this = thislet scrollTop =document.documentElement.scrollTop || document.body.scrollTop//变量windowHeight是可视区的高度let windowHeight =document.documentElement.clientHeight || document.body.clientHeight//变量scrollHeight是滚动条的总高度let scrollHeight =document.documentElement.scrollHeight || document.body.scrollHeight//滚动条到底部的条件let data = scrollTop + windowHeightif (data == scrollHeight ||(scrollHeight - data <= 60 && _this.loadflag)) {let currentpage = _this.currentpagelet maxpages = _this.maxpagesif (maxpages > currentpage && _this.loadflag) {_this.loadflag = false_this.config.page++_this.getList()}}},async getList() {let params = {page: this.config.page,pageSize: this.config.pageSize,}const res = await apiGet(posterGetBrochureList, params)this.isShowList = trueif (res.code == 200) {const { total, records, current, pages } = res.datathis.config.page = current //当前页this.config.pages = pages //总共多少页this.config.total = total //总条数this.maxpages = pagesthis.currentpage = currentif (current <= pages) {this.loadflag = truethis.listData = [...this.listData, ...records]} else {this.listData = records}}},},destroyed() {//离开页面的时候移除监听滚动事件,提高性能window.removeEventListener('scroll', this.handleScroll, true)},
}
</script><style lang="scss" scoped></style>

2.使用组件vant(van-list)

36bdfd33802349e895b4485b6fb12102.png

<template><div></div>
</template><script>
export default {data() {return {listLoading: false, //分页加载finished: false, //分页是否加载完成listData: [],config: {page: 1,pageSize: 10,total: 0,},}},created() {this.getList()},methods: {//关键函数,监听下拉加载更多onLoad() {this.getList()},async getList() {const formData = {page: this.config.page,pageSize: this.config.pageSize,}const res = await apiGet(apigetqueryArchiveMatchedPageList, formData)if (res.code == 200) {const data = res.datathis.listData = [...this.listData, ...data.records]this.listLoading = false//判断如果当前请求条数小于十条,就停止下拉加载if (data.records.length < 10) {this.finished = true}this.config.page++}},},
}
</script><style lang="scss" scoped></style>

 

3.uniapp使用scroll-view上拉加载更多

39fcb7642c4146bdb85f4482e0942775.png

 <scroll-viewclass="law_main"scroll-y="true"@scrolltolower="lower"lower-threshold="50"refresher-enabled:refresher-triggered="triggered"@refresherrefresh="onRefresh"><view v-for="(item, index) in dataList" :key="index" class="content"><view class="time">{{ item.createTime }}</view><view class="score">{{ item.integral }}</view></view><!-- <view class="more_text" v-if="showMoreData">没有数据了...</view> --></scroll-view>

 

<script>
import { exam } from '@/api/index.js'
export default {data() {return {dataList: [],pageNum: 1,pageSize: 20,totalPage: 1,triggered: false,isfreshing: false,showMoreData: false,title: '暂无数据',}},onShow() {this.getData()},methods: {lower(e) {if (this.pageNum < this.totalPage) {this.pageNum += 1this.getData()}},onRefresh() {if (!this.triggered) {if (this.isfreshing) returnthis.isfreshing = trueif (!this.triggered) {this.triggered = true}this.showMoreData = falsethis.emptyData = falsethis.dataList = []this.pageNum = 1this.getData()}},getData() {let params = {current: this.pageNum,size: this.pageSize,}uni.showLoading({title: '正在加载',})try {exam.answerPaperUserPaperList(params).then((res) => {if (this.pageNum == 1) {this.dataList = res.data.recordsthis.triggered = falsethis.isfreshing = false} else {this.dataList = this.dataList.concat(res.data.records)}// if (this.dataList.length == res.data.total && this.dataList.length > 20) {// 	this.showMoreData = true;// }res.data.total == this.pageSize? (this.totalPage = 1): (this.totalPage = parseInt(res.data.total / this.pageSize + 1))if (!this.dataList.length) {this.emptyData = truethis.showMoreData = false}uni.hideLoading()})} catch (error) {uni.hideLoading()}},},onUnload() {},
}
</script>

tips:使用scroll-view上拉加载更多时,需要给一个高度,否则下拉加载将不生效 

362c05d99a1c479ab3aa48b6928f9fcf.png

 

4.uniapp监听页面触底加载更多onReachBottom

<script>
import { articlePageListApi } from '@/service/newpage.js'
import qs from 'qs'
export default {data() {return {params: {page: 1,pageSize: 10,},status: 'loadmore',// loadmore/loading / nomoreartlist: [],hasmore: true,}},onLoad() {this.params.page = 1this.artlist = []this.hasmore = truethis.getMylist()},//关键代码下拉刷新加载更多onReachBottom() {this.status = 'loading'if (this.hasmore) {this.status = 'loading'this.params.page++this.getMylist()} else {let timmer = setTimeout(() => {this.status = 'nomore'}, 1000)}},methods: {getMylist() {articlePageListApi(qs.stringify({...this.params,}),).then((res) => {if (res.data) {const { list } = res.dataif (this.artlist?.length < list.total) {this.hasmore = truethis.status = 'loadmore'} else {this.hasmore = falsethis.status = 'nomore'}this.artlist = [...this.artlist, ...list.records]}})},},
}
</script>

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty技术全解析:DelimiterBasedFrameDecoder类深度解析

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

Java中等题-交错字符串(力扣)

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 ... snt t1 t2 ... tm|n - m| < 1交错 是…

AI入门指南(二):算法、训练、模型、大模型是什么?

文章目录 一、前言二、算法是什么&#xff1f;概念实际应用 三、训练是什么&#xff1f;概念实际应用 四、模型是什么&#xff1f;概念实际应用小结 五、大模型是什么&#xff1f;概念大模型和小模型有什么区别&#xff1f;大模型分类实际应用 六、总结七、参考资料 一、前言 …

37.【C语言】指针(重难点)(B)

目录&#xff1a; 5.疑问解答&#xff1a;指针的解引用 6.指针或-整数 7.特殊类型*void指针 承接上篇19.【C语言】指针&#xff08;重难点&#xff09;&#xff08;A&#xff09; 5.疑问解答&#xff1a;指针的解引用 观察下列代码产生的现象 #include <stdio.h> int …

代码随想录算法训练营day39||动态规划07:多重背包+打家劫舍

多重背包理论 描述&#xff1a; 有N种物品和一个容量为V 的背包。 第i种物品最多有Mi件可用&#xff0c;每件耗费的空间是Ci &#xff0c;价值是Wi 。 求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量&#xff0c;且价值总和最大。 本质&#xff1a; …

yolov8旋转目标检测部署教程(附代码c++/python)

为了编写一个详细的YOLOv8旋转目标检测ONNX部署教程&#xff0c;我们需要考虑几个关键点&#xff1a;模型转换为ONNX格式、ONNX模型的部署以及后处理逻辑。由于YOLOv8本身还未发布&#xff0c;我们将基于现有的知识和技术来进行推断。 以下是部署YOLOv8旋转目标检测模型到ONNX…

【经验分享】ShardingSphere+Springboot-03 : COMPLEX_INLINE 复杂行表达式分片算法

文章目录 3.3 复杂分片算法3.3.1 COMPLEX_INLINE 复杂行表达式分片算法 3.3 复杂分片算法 3.3.1 COMPLEX_INLINE 复杂行表达式分片算法 复合分片比较灵活&#xff0c;适合于分片的字段比较多&#xff0c;分片比较复杂的场景&#xff0c;使用这种分片的话必须对自己的业务比较…

AWS生成式AI项目的全生命周期管理

随着人工智能技术的迅速发展&#xff0c;生成式 AI 已成为当今最具创新性和影响力的领域之一。生成式 AI 能够创建新的内容&#xff0c;如文本、图像、音频等&#xff0c;具有广泛的应用前景&#xff0c;如自然语言处理、计算机视觉、创意设计等。然而&#xff0c;构建一个成功…

PythonStudio 控件使用常用方式(十八)TCategoryButtons

PythonStudio是一个极强的开发Python的IDE工具&#xff0c;它使用的是Delphi的控件&#xff0c;常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点&#xff0c;也作为PythonStudio的参考。 从1.2.1版开始&#xff0c;Python…

jsp-图书管理系统

一、系统介绍 本系统为图书管理系统&#xff0c;主要围绕图书管理和会员管理两个核心内容展开&#xff0c;图书管理包括图书的上架&#xff0c;下架&#xff0c;图书的借阅&#xff0c;归还&#xff0c;定损等&#xff1b; 会员管理包括会员注册&#xff0c;充值&#xff0c;损…

【Datawhale X 魔搭 】AI夏令营第四期AIGC方向,Task1:可图Kolors-LoRA风格AI图片生成入门(持续更新)

第一步&#xff1a;下载baseline文件 &#xff08;1&#xff09;安装lfs&#xff0c;用于git脚本命令下载大文件 git lfs install 在AI模型和数据集中&#xff0c;通常包含一些较大的文件&#xff0c;例如图像或模型参数。这些文件可能会超过普通Git仓库的处理能力。git lfs 可…

【Linux SQLite数据库】一、SQLite交叉编译与移植

SQLite 是一个用 C 语言编写的开源、轻量级、快速、独立且高可靠性的 SQL 数据库引擎&#xff0c;它提供了功能齐全的数据库解决方案。SQLite 几乎可以在所有的手机和计算机上运行&#xff0c;它被嵌入到无数人每天都在使用的众多应用程序中。此外&#xff0c;SQLite 还具有稳定…

【电控笔记z6】无感文献综述

高频注入 afabeta注入 lq/ld越大统好 凸极性大反电动势ZVCD pwm电压向量为主 增加动态特性 设计隆博戈估测器 高频注入: lq/ld比较大 运用在低转速 到高速的时候 , 切换到model_base的方法进行反电动势侦测 smo :速度无法很低 有个极限 受杂讯影响大 高速时候用 总结 用spm …

UE基础 —— 编辑器界面

菜单栏 UE中每个编辑器都有一个菜单栏&#xff0c;部分菜单会出现在所有编辑器窗口中&#xff0c;如File、Window、Help&#xff0c;其他则是其编辑器特有的&#xff1b; 主工具栏 UE中部分最常用的工具和命令的快捷方式&#xff1b; 1&#xff0c;保存按钮&#xff08;ctrls&a…

深入探索大模型:从基础到实践,开启AI之旅

摘要&#xff1a; 在人工智能领域&#xff0c;大模型技术正成为推动创新和进步的关键力量。对于初学者而言&#xff0c;掌握大模型的基本概念、理论和技术是至关重要的。 本文将为你提供一个全面的学习路线&#xff0c;帮助你从基础知识出发&#xff0c;逐步深入到大模型的实践…

探索Python的文本转换魔法:html2text库的奥秘

文章目录 **探索Python的文本转换魔法&#xff1a;html2text库的奥秘**背景&#xff1a;为何选择html2text&#xff1f;这个库是什么&#xff1f;如何安装这个库&#xff1f;简单使用&#xff1a;5个基本函数介绍场景应用&#xff1a;3个实际使用示例常见问题与解决方案总结 探…

Linux 进程调度(三)之进程的优先级

目录 一、概述二、进程的优先级1、基础概念2、优先级的意义3、查看优先级4、PRI 和 NI5、修改优先级6、控制进程的优先级的系统调用7、调整优先级的限制 一、概述 在 Linux 中&#xff0c;每个进程都有一个优先级。优先级决定了进程在系统资源分配中的先后顺序。Linux 中的进程…

NBT:单细胞转录组新降维可视化方法PHATE

新降维可视化 NGS系列文章包括NGS基础、转录组分析 &#xff08;Nature重磅综述|关于RNA-seq你想知道的全在这&#xff09;、ChIP-seq分析 &#xff08;ChIP-seq基本分析流程&#xff09;、单细胞测序分析 (重磅综述&#xff1a;三万字长文读懂单细胞RNA测序分析的最佳实践教程…

vue 日期控件 100天内的时间禁用不允许选择

vue 日期控件 100天内的时间禁用不允许选择&#xff0c;可以从101天选起 比如&#xff0c;2024年8月9号开始&#xff0c;100天内禁止选择&#xff0c;第101天之后的日期可以选&#xff0c;效果如图所示 // 日期控件代码 加上 :picker-options"pickerOptions" <…

nestjs 全栈进阶--windows安装docker desktop

一. 下载软件 https://docs.docker.com/desktop/install/windows-install/ 根据你自己的电脑选择 二. 安装 双击下载的exe 点击ok 安装好后 桌面会有个这样的图标 三. 配置环境 因为docker desktop 是可以部署在windows 上来运行docker的应用服务的&#xff0c;其基于windo…