uniapp中使用Mescroll实现下拉刷新与上拉加载项目实战

news2024/11/28 17:31:16

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载

前言

下拉刷新和上拉加载更多成为了提升用户体验不可或缺的功能。UniApp作为一个跨平台的应用开发框架,支持使用Vue.js语法编写多端(iOSAndroidH5等)应用。Mescroll作为一款专为Vue设计的滚动插件,可以很好地满足我们在UniApp项目中的需求。
使用【wxs+renderjs实现】高性能的下拉刷新上拉加载组件。
支持uni-app的下拉刷新和上拉加载的组件,支持原生页面和局部区域滚动。

Mescroll 使用

mescroll 官网
组件案例

步骤一、打开HbuilderX插件市场 下载插件,并选择一个项目导入

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战
如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战
如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战
具体目录结构:
如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战

步骤二、在main.js注册全局组件, 方便省去具体页面中引入和注册mescroll组件的代码

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战

步骤三、在index.vue页面中使用 <mescroll-body> 组件将需要下拉上拉的块包裹起来,如下代码
<template>
	<view class="content">
		<!-- 搜索框在小程序中显示 -->
		<!-- #ifdef MP -->
		<search-input @click.native="navTo('/pages/search/search')"></search-input>
		<!-- #endif -->
		<!-- 轮播图 -->
		<banner :bannerList="bannerList"></banner>
		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption">
			<!-- 分类区域 -->
			<category-box :categoryList="categoryList"></category-box>
			<!-- 热门推荐 -->
			<view class="list-container">
				<swiper-course name="热门推荐" word="HOT" :courseData="hotCourseList"></swiper-course>
				<scroll-course name="近期上新" word="NEW" :courseData="newCourseList"></scroll-course>
				<swiper-course name="免费精选" word="FREE" :courseData="freeCourseList"></swiper-course>
				<!-- 付费精品 -->
				<list-course name="付费精品" word="NICE" :courseData="payCourseList"></list-course>
			</view>
		</mescroll-body>
	</view>
</template>

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战
模板属性解释:
mescroll-body: 这是Mescroll的核心组件,用于包裹需要实现下拉刷新和上拉加载功能的内容。
ref="mescrollRef": 通过ref引用,可以在脚本中访问Mescroll实例。
@init="mescrollInit": 当Mescroll初始化完成时,触发mescrollInit方法。
@down="downCallback": 当用户下拉时,触发downCallback方法。
@up="upCallback": 当用户上拉时,触发upCallback方法。
:down="downOption": 绑定下拉刷新的配置选项。

步骤四、导入相关模块,引入 mescroll-mixins.js,并使用mixin
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"
export default {
	mixins: [MescrollMixin]
}
步骤五、下拉刷新的配置选项,offset表示下拉多少距离后开始刷新。
data() {
	return {
		downOption: { // 3. 下拉刷新
			offset: 50, // 下拉高度多少,开始刷新
		}
	}
},
步骤六、设置上拉下拉函数

upCallback 方法既用于处理上拉加载更多,也用于处理下拉刷新的情况
下拉刷新的处理:当用户下拉页面时,Mescroll 会触发 downCallback 方法。在这个方法中,我们调用了 upCallback 方法,并传入了 { num: 1, size: 10 } 作为参数。这样做的目的是为了在下拉刷新时重新加载第一页的数据。
上拉加载的处理:当用户上拉页面时,Mescroll 会触发 upCallback 方法。这个方法会根据传入的 page 参数来决定加载哪一页的数据。

代码如下:

// 下拉上拉
async upCallback(page) {
	if (page.num === 1) {
		// this.loadBannerData()
		this.loadCateData()
		this.loadHotCourseData()
		this.loadNewCourseData()
		this.loadFreeCourseData()
		// this.loadPayCourseData()
	}
	//付费精品,带分页功能,isFree:0收费,1免费
	const {
		data
	} = await api.getList({
		isFree: 1
	}, page.num, page.isze)
	const curList = data.records

	// 如果第一页需要手动设置空列表
	if (page.num == 1) this.payCourseList = [];
	// 追加新数据
	this.payCourseList = this.payCourseList.concat(curList)
	// 请求成功, 隐藏加载状态,判断是否数据全部加载完(后台接口有返回列表的总数据量total)
	this.mescroll.endBySize(curList.length, data.total)
},
关键逻辑:

page.num === 1:如果当前页码是1,说明这是第一次加载数据,通常在下拉刷新时会触发。在这种情况下,我们加载分类、热门推荐、最近上新和免费精选的数据。
page.num > 1:如果当前页码大于1,说明这是上拉加载更多数据。在这种情况下,我们只加载付费精品的数据。

详细步骤:

下拉刷新:
用户下拉页面,触发 downCallbackdownCallback 调用 upCallback,传入 { num: 1,> size: 10 }upCallback 根据 page.num === 1, 加载第一页的数据,包括分类、热门推荐、最近上新和免费精选的数据。 加载完成后,调用this.mescroll.endBySize(curList.length, data.total) 结束加载状态。
上拉加载:
用户上拉页面,触发 upCallbackupCallback 根据 page.numpage.size, 加载相应页码的数据,通常是付费精品的数据。 加载完成后,调用 this.mescroll.endBySize(curList.length,data.total) 结束加载状态。

通过这种方式,我们可以用一个 upCallback 方法同时处理下拉刷新和上拉加载的逻辑,从而简化代码结构,提高代码的可维护性和复用性。

效果:

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战
如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战

如何在UniApp中使用Mescroll实现下拉刷新与上拉加载项目实战

完结~

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

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

相关文章

【接口自动化测试】一文从0到1详解接口测试协议!

接口自动化测试是软件开发过程中重要的环节之一。通过对接口进行测试&#xff0c;可以验证接口的功能和性能&#xff0c;确保系统正常运行。本文将从零开始详细介绍接口测试的协议和规范。 定义接口测试协议 接口测试协议是指用于描述接口测试的规范和约定。它包含了接口的请求…

RAG数据拆分之PDF

引言RAG数据简介PDF解析方法及工具代码实现总结 二、正文内容 引言 本文将介绍如何将RAG数据拆分至PDF格式&#xff0c;并探讨PDF解析的方法和工具&#xff0c;最后提供代码示例。 RAG数据简介 RAG&#xff08;关系型属性图&#xff09;是一种用于表示实体及其关系的图数据…

【开源项目】2024最新PHP在线客服系统源码/带预知消息/带搭建教程

简介 随着人工智能技术的飞速发展&#xff0c;AI驱动的在线客服系统已经成为企业提升客户服务质量和效率的重要工具。本文将探讨AI在线客服系统的理论基础&#xff0c;并展示如何使用PHP语言实现一个简单的AI客服系统。源码仓库地址&#xff1a;ym.fzapp.top 在线客服系统的…

WEB攻防-通用漏洞XSS跨站MXSSUXSSFlashXSSPDFXSS

演示案例&#xff1a; UXSS-Edge&CVE-2021-34506 FlashXSS-PHPWind&SWF反编译 PDFXSS-PDF动作添加&文件上传 使用jpexs反编译swf文件 上传后&#xff0c;发给别人带漏洞的分享链接

QSqlTableModel的使用

实例功能 这边使用一个实例显示数据库 demodb 中 employee 数据表的内容&#xff0c;实现编辑、插入、删除的操作&#xff0c;实现数据的排序和记录过滤&#xff0c;还实现 BLOB 类型字段 Photo 中存储照片的显示、导入等操作&#xff0c;运行界面如下图&#xff1a; 在上图中…

适用于学校、医院等低压用电场所的智能安全配电装置

引言 电力&#xff0c;作为一种清洁且高效的能源&#xff0c;极大地促进了现代生活的便捷与舒适。然而&#xff0c;与此同时&#xff0c;因使用不当或维护缺失等问题&#xff0c;漏电、触电事件以及电气火灾频发&#xff0c;对人们的生命安全和财产安全构成了严重威胁&#xf…

LabVIEW实现UDP通信

目录 1、UDP通信原理 2、硬件环境部署 3、云端环境部署 4、UDP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 8、测试验证 本专栏以LabVIEW为开发平台&#xff0c;讲解物联网通信组网原理与开发方法&#xff0c;覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合…

java——Spring MVC的工作流程

Spring MVC的工作流程是基于模型-视图-控制器&#xff08;MVC&#xff09;设计模式的一个典型实现&#xff0c;以下是其主要工作流程步骤&#xff1a; 客户端请求提交&#xff1a; 用户通过浏览器向服务器发送请求&#xff0c;该请求首先到达Spring MVC的前端控制器DispatcherS…

带有悬浮窗功能的Android应用

android api29 gradle 8.9 要求 布局文件 (floating_window_layout.xml): 增加、删除、关闭按钮默认隐藏。使用“开始”按钮来控制这些按钮的显示和隐藏。 服务类 (FloatingWindowService.kt): 实现“开始”按钮的功能&#xff0c;点击时切换增加、删除、关闭按钮的可见性。处…

【编译原理】词法、语法、语义实验流程内容梳理

编译原理实验有点难&#xff0c;但是加上ai的辅助就会很简单&#xff0c;下面梳理一下代码流程。 全代码在github仓库中&#xff0c;链接&#xff1a;NeiFeiTiii/CompilerOriginTest at Version2.0&#xff0c;感谢star一下 一、项目结构 关键内容就是里面的那几个.c和.h文件。…

Linux介绍与安装指南:从入门到精通

1. Linux简介 1.1 什么是Linux&#xff1f; Linux是一种基于Unix的操作系统&#xff0c;由Linus Torvalds于1991年首次发布。Linux的核心&#xff08;Kernel&#xff09;是开源的&#xff0c;允许任何人自由使用、修改和分发。Linux操作系统通常包括Linux内核、GNU工具集、图…

MFC图形函数学习12——位图操作函数

位图即后缀为bmp的图形文件&#xff0c;MFC中有专门的函数处理这种格式的图形文件。这些函数只能处理作为MFC资源的bmp图&#xff0c;没有操作文件的功能&#xff0c;受限较多&#xff0c;一般常作为程序窗口界面图片、显示背景图片等用途。有关位图操作的步骤、相关函数等介绍…

12.Three.js纹理动画与动效墙案例

12.Three.js纹理动画与动效墙案例 在Three.js的数字孪生场景应用中&#xff0c;我们通常会使用到一些动画渲染效果&#xff0c;如动效墙&#xff0c;飞线、雷达等等&#xff0c;今天主要了解一下其中一种动画渲染效果&#xff1a;纹理动画。下面实现以下动效墙效果&#xff08…

SJYP 24冬季系列 FROZEN CHARISMA发布

近日&#xff0c;女装品牌SJYP 2024年冬季系列——FROZEN CHARISMA已正式发布&#xff0c;展现了更加干练的法式风格。此次新品发布不仅延续了SJYP一贯的强烈设计风格和个性时尚&#xff0c;更融入了法式风情的干练元素&#xff0c;为消费者带来了一场视觉与穿着的双重盛宴。  …

无人机产业发展如何?如何进行产业分析?

▶无人机产业发展现状&#xff1a;高速增长 1.市场规模和增长趋势&#xff1a; 全球无人机市场规模在2021年约为256亿美元&#xff0c;同比增长14%。中国民用无人机市场规模在2021年达到869.12亿元&#xff0c;显示出市场的快速增长。 预计到2029年&#xff0c;中国无人机市…

<项目代码>YOLOv8 红绿灯识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

DVWA靶场——File Inclusion

File Inclusion&#xff08;文件包含&#xff09;漏洞 指攻击者通过恶意构造输入&#xff0c;利用应用程序错误的文件包含机制&#xff0c;导致程序包含并执行未经授权的本地或远程文件。这类漏洞广泛存在于Web应用程序中&#xff0c;尤其是在那些允许用户提供文件路径或URL的地…

Ubuntu下用Docker部署群晖系统---Virtual DSM --zerotier实现连接

Ubuntu下用Docker部署群晖系统—Virtual DSM --zerotier实现连接 1. Docker 安装 安装最新docker curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo docker run hello-world2.docker-compose 安装 sudo pip install docker-compose测试安装是否成功…

神经网络(系统性学习四):深度学习——卷积神经网络(CNN)

相关文章&#xff1a; 神经网络中常用的激活函数神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇神经网络&#xff08;系统性学习二&#xff09;&#xff1a;单层神经网络&#xff08;感知机&#xff09;神经网络&#xff08;系统性学习三&#xff09;&#…

数据结构C语言描述5(图文结合)--队列,数组、链式、优先队列的实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…