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

news/2024/7/20 1:01:58 标签: uni-app, 小程序, android

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

首先 我在根目录下创建了一个 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.niftyadmin.cn/n/481444.html

相关文章

常见的远程协助软件简介

1.RayLink远程控制软件 RayLink是一个支持多系统多设备间相互远程控制的软件&#xff0c;是具有远程制作、远程办公、远程游戏、远程协助等需求的IT技术、游戏玩家、网络办公等这些人的最佳选择。通过使用RayLink&#xff0c;可随时随地远程控制其他电脑或手机&#xff0c;远程…

太酷了!活体检测眨眼、张嘴、点头、摇头动作一网打尽:人脸面部活体检测系统【含Python源码+PyqtUI界面+原理详解】

基本功能演示 摘要&#xff1a;活体检测是用于判断捕捉到的人脸是真实人脸&#xff0c;还是伪造的人脸攻击的一种技术手段。本文详细介绍了其实现的技术原理&#xff0c;同时给出完整的Python实现代码&#xff0c;并且通过PyQT实现了UI界面&#xff0c;更方便进行功能的展示。该…

<List<Map<String, String>>> List Map转List对象案例

原始数据&#xff1a;{001张三, 002李四, 003王五, 004赵六} 目标数据&#xff1a; { “data”: [ { “key”: “001”, “title”: “张三”, “value”: “001” }, { “key”: “002”, “title”: “李四”, “value”: “002” }, { “key”: “003”, “title”: “王五”…

Windows上安装Redis教程

Windows上安装Redis教程 一、下载 Redis1. 下载 Redis 压缩包2. 把下载好的压缩包移动到自己的安装目录下 二、安装 Redis三、配置 Redis3.1 配置 Redis 环境变量3.2 配置 Redis 后台服务 一、下载 Redis 1. 下载 Redis 压缩包 我这里下载的是 Redis 5.0 下载地址&#xff1a;…

Android UI框架之 XUI

安卓的原生View确实有点不太好看&#xff0c;如果要想漂亮起来。。需要定义各种资源文件。。麻烦。。 市面上好用的三方UI也不少。。但有的不齐全。。 今天推荐一款比较好用的UI框架&#xff1a;XUI XUI包含的组件还是比较丰富的&#xff1a; TextView、Button、EditText、Ima…

VSCode 代码格式化

个人感觉多人团队开发的 用这种方法还挺好的&#xff1a;&#xff01; VSCode 代码格式化&#xff0c;我的格式化总和别人冲突怎么办&#x1f62d; - 掘金 先安装插件 Prettier &#xff0c;也是一款 VSCode 上的插件 项目根目录建文件 .prettierrc {"printWidth":…

c++ 之 map second

今天遇到 second 的&#xff0c;分析代码&#xff0c;查 c map 手册&#xff0c;才知道second为何意。 /* 示例&#xff1a;*/ #include <iostream> #include <map>int main() {std::map<int, float> num_map;num_map[4] 4.13;num_map[9] 9.24;num_map[1…

Java CyclicBarrier和CountDownLatch的区别

Java CyclicBarrier和CountDownLatch的区别 在Java中&#xff0c;CyclicBarrier和CountDownLatch是用于多线程协作的工具类&#xff0c;它们都可以用于线程间的同步和等待&#xff0c;但在使用方式和场景上有一些区别。 CyclicBarrier&#xff08;循环屏障&#xff09;&#…