uni-app滚动分页 兼容(App 小程序 H5)

news2024/12/25 0:08:18

因为手机端本身屏幕空间不大 所以大家一般都会选择用滚动分页

首先 我在根目录下创建了一个 api目录 下面创建了一个bookApi.js
其中写了一个请求函数
getBookList 根据当前页 page 和 每页展示多少条 pageSize 获取数据
那么 我的组件代码是这样的

<template>
  <scroll-view
    class="box"
	scroll-y="true"
	@scrolltolower="scrollToLower"
	v-if="!loading"
  >
    <view
	  class="management"
	  v-for = "item in bookList"
	  :key = "item.id"
	>{{ item.name }}</view>
  </scroll-view>
  <view v-else>
	  正在加载
  </view>
</template>
<script>
  import { getBookList } from "@/api/bookApi.js"
  export default {
    data() {
        return {
		  pageData: {
			  page: 1,
			  pageSize: 5,
			  total: 0
		  },
		  bookList: [],
		  loading: false
        }
    },
	methods: {
		scrollToLower(){
			if((this.pageData.page * this.pageData.pageSize) <= this.total){
				this.pageData.page += 1;
				this.getPages();
			}else{
				uni.showToast({
				  title: '没有更多数据了',
				  icon: 'none',
				  duration: 2000
				})
			}
		},
	     getPages(){
			 this.loading = true;
			 getBookList(this.pageData.page,this.pageData.pageSize).then(res=>{
				 if(res.state == 200) {
					 this.total = res.data.total;
				     this.bookList = [...this.bookList,...res.data.records];
					 this.loading = false;
				 }
			 })
		 }
	},
    mounted() {
		this.pageData = {
		  page: 1,
		  pageSize: 5,
		  total: 0
	    }
		this.getPages();
    }
  }
</script>

<style scoped>
	.box{
		height: 50vh;
		width: 100vw;
		overflow: auto;
	}
	.management{
		width: 100vw;
		height: 40%;
		border-bottom: 1px solid black;
	}
</style>

首先 我们肯定要引入bookApi.js中的getBookList
然后 在mounted 页面渲染完成的生命周期中执行将分页的数据回归到 第一页 每页展示 五条
然后先调用一次getPages 获取第一页数据

然后 scroll-view标签的scrolltolower可以监听元素滚动到底
每次滚动到底都会触发scrollToLower
但如果你不控制一下 用户滚动到底一次 就会触发一次 很可能重复请求 所以 我们写了个loading
等接口还没返回时 不让他乱动
然后我们的计算是 total接的是分页接口返回的数据总条数 这个计算大家可以自己去理解 不难的
就是没有数据 我们弹出提示 没有更多数据了
因为是滚动分页 我们数据肯定是都要展示
所以 我们不能直接

this.bookList = res.data.records;

这样 你会把原来的数据覆盖掉 我们用的 是 JS中ES6的数组合并方法 将bookList原有的数据和res.data.records合并在一起

那 我们运行项目 看看效果
H5肯定是最稳妥的
在这里插入图片描述
然后小程序 显然也很给力
在这里插入图片描述
最后 手机App也是没有任何问题
在这里插入图片描述

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

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

相关文章

MacBook Pro Apple M2 Max安装MySQL-8.0.33

文章目录 下载安装程序安装数据库配环境变量查看数据库状态 系统&#xff1a;macOS Ventura 芯片&#xff1a;M2 数据库&#xff1a;MySQL 8.0.33 下载安装程序 官网地址&#xff1a;https://www.mysql.com/ 点击页签“DOWLOADS“后将页面拖到底部&#xff0c;点MySQL Commu…

U盘的文件系统为FAT32才可以同时在苹果电脑和windows电脑中正常使用

文章目录 1.驱动器F中的磁盘未被格式化。想现在格式化吗&#xff1f;2.U盘插到苹果电脑上后无法写入 1.驱动器F中的磁盘未被格式化。想现在格式化吗&#xff1f; 我之前U盘的文件系统为exFAT&#xff0c;插入Windows Server 2003系统的电脑中&#xff0c;打开时弹出上面的提示框…

2023上半年软考系统分析师科目一整理-14

2023上半年软考系统分析师科目一整理-14 计算机系统性能评估中&#xff0c;( A )通常采用加法指令的运算速度来衡量计算机的速度。(D )首先计算出处理部件每个计算单元的有效计算率&#xff0c;再按不同字长加以调整&#xff0c;得出该计算单元的理论性能&#xff0c;所有组成该…

JavaFX学习:Observable Collections(观察集合)

JavaFX中的观察集合&#xff08;Observable Collections&#xff09;继承自Java的集合&#xff08;Collections&#xff09;。Java集合提供了List、Map、Set三种集合接口。JavaFX在Java集合基础上派生出可以监听集合内容变化的三种集合接口。接口如下&#xff1a; ObservableL…

【算法与数据结构】剑指 Offer 05、LeetCode替换空格

文章目录 一、题目二、双指针法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、双指针法 思路分析&#xff1a;这道题使用双指针法就能不用额外的辅助空间。首先计算字符串中的空格数量&#xff0c;然后重设…

函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜

函数模板 交换两个整型变量的值的Swap函数&#xff1a; void Swap(int & x,int & y) { int tmp x; x y; y tmp; } 交换两个double型变量的值的Swap函数: void Swap(double & x,double & y) { double tmp x; x y; y tmp; }用函数模板解决&#xff1a; …

MAYA动力学曲线带动骨骼

例子 2 自由下落了 对比测试 尖端 太麻烦&#xff0c;使用风 nucleus1.windDirectionZ10*sin(time) 把球合成一个 删除一个解算器&#xff0c;就不动了

Redis 性能管理/优化 双一致性问题 缓存雪崩/击穿/穿透

---------------------- Redis 性能管理 ---------------------------------------- ----- 查看Redis内存使用 ----- info memoryredis-cli -a abc123 info memory ----- 内存碎片率 ----- used_memory_rss&#xff1a;是Redis向操作系统申请的内存。used_memory&#xff1a;是…

从有序顺序表中删除所有其值重复的元素(用不同的负数代替),使所有元素的值均不同。

题目要求&#xff1a;从有序顺序表中删除所有其值重复的元素&#xff08;用不同的负数代替&#xff09;&#xff0c;使所有元素的值均不同。 0&#xff1a;有序顺序表 1&#xff1a;删除所有其值重复的元素 2&#xff1a;用不同的负数代替 3&#xff1a;顺序表中所有元素的值均…

Maven中依赖使用范围

IDEA中help中show Log in Explorer可以查看idea日志 依赖使用范围 构建包含的流程&#xff1a;编译 &#xff0c;测试 &#xff0c;运行 &#xff0c;打包 &#xff0c;安装 &#xff0c;部署 comile test package install deploy 使用标签 1&#xff1a;compile 缺省值 伴随者…

OpenStack(T版)——块存储(Cinder)服务介绍与安装

文章目录 OpenStack(T版)——块存储(Cinder)服务介绍与安装安装和配置(controller)准备(1)创建数据库(2)加载admin user的环境变量(3)创建Identity服务凭据(4)创建Cinder 块存储服务组件的API endpoint 安装和配置Cinder块存储服务组件(1)安装软件包(2)编辑/etc/cinder/cinder.…

第七章:使用FileZilla搭建FTP服务器详解

目录 一、软件下载 二、服务器安装与配置 三、使用客户端 一、软件下载 到官方网站下载 FileZilla 的服务端和客户端程序 &#xff1a; FileZilla - The free FTP solution 二、服务器安装与配置 1 安装 安装的过程非常简单&#xff0c;直接下一步就可以了&#xff0c;需要…

【热部署】springboot-devtools

目录 pom idea配置 1 2 2021往后的idea版本 之前的idea版本 3 说明 注意 pom <!-- <!&ndash; 热部署 &ndash;>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devt…

前端开发中的ajax请求、axios封装

目录 浏览器http请求 同步 js标签跨域、url 异步ajax、websock协议 ajax是异步的技术术语&#xff0c;最早的api是xhr&#xff08;XMLHttpRequest&#xff09; fetch es6 api axios 封装axios src/utils/request.ts src/utils/func.ts SSO&#xff08;Single Sign-On…

基于JAVA SpringBoot和Vue UniApp外卖订餐小程序

随着社会的发展和进步&#xff0c;网络信息技术的迅速发展已经渗透到我们生活的各个角落&#xff0c;传统餐饮业也受到了很大的影响&#xff0c;大部分传统中餐馆都开门&#xff0c;最多只能通过一个电话预约。但是在中国春节长假期间&#xff0c;餐厅不能接待这么多顾客。因此…

zabbix6.0LTS 配置proxy分布式监控

一、环境介绍 角色IP备注zabbix_server192.168.1.17zabbix_proxy192.168.1.14rpm包方式安装zabbix_agent192.168.1.18源码包安装 二、部署zabbix_proxy数据库 zabbix_proxy必须要安装一个数据库.zabbix官网推荐使用mariadb数据库&#xff0c;本人尝试过使用mysql8.0。由于内…

一步一步学OAK之十二:DepthAI API中Nodes各节点特性总结

目录 ColorCamera节点EdgeDetector节点FeatureTracker 节点ImageManip节点IMU 节点MobileNetDetectionNetwork节点MobileNetSpatialDetectionNetwork节点MonoCamera节点NeuralNetwork节点ObjectTracker节点Script节点SpatialLocationCalculator节点SPIIn节点SPIOut节点StereoDe…

2023年华中杯数学建模A题新型镇静药物临床实验疗效分析与预测解题全过程文档及程序

2023年华中杯数学建模 A题 新型镇静药物临床实验疗效分析与预测 原题再现 临床研究是新药物研究中的关键环节。本题拟围绕一种新型镇静药物的临床实验数据分析展开。 尝试根据附件中提供的数据和相关材料&#xff0c;研究以下问题&#xff1a;   1. 关于术中、术后 24h 不良…

React V6实现v-if、v-show、v-html

功能背景 在vue中使用v-if、v-show、v-html这些命令得心应手&#xff0c;那么react是否也存在这样的命令呢&#xff1f;似乎是没有的&#xff0c;需要自己实现&#xff0c;也就是用原生的写法直接控制dom。 实际效果 代码实现 const [dialogVisible, setDialogVisible] useSt…

Linux学习之守护进程

守护进程是daemon&#xff08;也称作精灵进程&#xff09;&#xff0c;守护进程不需要终端就可以启动起来&#xff0c;另外它的日志会打印到一些特殊文件中&#xff0c;并且占用的目录是根目录&#xff0c;避免占用其他目录&#xff0c;避免想要卸载其他目录时&#xff0c;报无…