Uniapp中实现加载更多、下拉刷新、返回顶部功能

一、加载更多:

在到达底部时,将新请求过来的数据追加到原来的数组即可:

import {onReachBottom
} from "@dcloudio/uni-app";const pets = ref([]); // 显示数据function network() {uni.request({url: "https://api.thecatapi.com/v1/images/search",data: {limit: 10}}).then(res => {pets.value = [...pets.value, ...res.data]; }).catch(error => {uni.showToast({title: '请求有误会',icon: "none"})}).finally(() => {// uni.hideLoading();uni.hideNavigationBarLoading();uni.stopPullDownRefresh();})
}onReachBottom(() => {network();
})

二、下拉刷新:

在下拉时加载新数据:

	import {onPullDownRefresh} from "@dcloudio/uni-app";onPullDownRefresh(() => {pets.value = []; // 先将原来的数据清空,然后加载新数据network();})

三、返回顶部:

使用Uniapp界面滚动API实现:

		uni.pageScrollTo({scrollTop: 0,duration: 100})

其它知识点:

uni.showNavigationBarLoading(); // 导航栏中显示加载状态
uni.hideNavigationBarLoading(); // 导航栏中隐藏加载状态
    
// 页面中显示加载状态
uni.showLoading({
     title: '加载中'
});

uni.hideLoading(); // 页面中隐藏加载状态

uni.startPullDownRefresh(); // 下拉,需在pages.json对应页面的style位置开启:enablePullDownRefresh
uni.stopPullDownRefresh(); // 停止下拉

env(safe-area-inset-bottom):css中获取底部安全区高度;

组件完整代码:

<template><view class="container"><view class="monitor-list-wrapper"><view class="monitor-list" v-for="(pet, index) in pets" :key="pet.id"><image lazy-load :src="pet.url" mode="aspectFill" class="monitor-photo" @click="onPreview(index)"></image><view class="monitor-title">{{pet.id}}</view></view></view><view class="load-more"><uni-load-more status="loading"></uni-load-more></view><view class="float"><view class="item" @click="onRefresh"><uni-icons type="refresh" size="26" color="#888"></uni-icons></view><view class="item" @click="onTop"><uni-icons type="arrow-up" size="26" color="#888"></uni-icons></view></view></view>
</template><script setup>import {ref} from "vue";import {onReachBottom,onPullDownRefresh} from "@dcloudio/uni-app";const pets = ref([]);function network() {// uni.showLoading({// 	title: '加载中'// });uni.showNavigationBarLoading();uni.request({url: "https://api.thecatapi.com/v1/images/search",data: {limit: 10}}).then(res => {pets.value = [...pets.value, ...res.data];}).catch(error => {uni.showToast({title: '请求有误会',icon: "none"})}).finally(() => {// uni.hideLoading();uni.hideNavigationBarLoading();uni.stopPullDownRefresh();})}network();// 图片预览function onPreview(index) {const urls = pets.value.map(item => item.url);uni.previewImage({current: index,urls})}function onRefresh() {uni.startPullDownRefresh(); // 需在pages.json对应位置开启:enablePullDownRefresh}function onTop() {uni.pageScrollTo({scrollTop: 0,duration: 100})}onReachBottom(() => {network();})onPullDownRefresh(() => {pets.value = [];network();})
</script><style lang="scss" scoped>.container {padding: 0 $myuni-spacing-super-lg;background: #D4ECFF;}.monitor-list-wrapper {display: grid;grid-template-columns: repeat(2, 1fr);gap: $myuni-spacing-lg;.monitor-list {border-radius: $myuni-border-radius-base;padding: $myuni-spacing-lg;width: 305rpx;background-color: $myuni-bg-color;.monitor-photo {height: 200rpx;width: 100%;}}.monitor-title {height: 32rpx;line-height: 32rpx;color: $myuni-text-color;font-size: $myuni-font-size-lg;text-align: center;}}.load-more {padding-bottom: calc(env(safe-area-inset-bottom) + 80rpx);}.float {position: fixed;right: 30rpx;bottom: 80rpx;padding-bottom: env(safe-area-inset-bottom);.item {width: 90rpx;height: 90rpx;border-radius: 50%;background-color: rgba(255, 255, 255, 0.9);margin-bottom: 20rpx;display: flex;align-items: center;justify-content: center;border: 1px solid #EEE;}}
</style>

四、实现效果:

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

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

相关文章

Flutter:封装ActionSheet 操作菜单

演示效果图 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 标题/// [items] 选项列表 …

【Rust练习】28.use and pub

练习题来自&#xff1a;https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以将两个同名类型引入到当前作用域中&#xff0c;但是别忘了 as 关键字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以将重名的内容取别名&#xff1a;…

Nginx 可观测性最佳实践

Nginx 介绍 Nginx 是一个开源、轻量级、高性能的 HTTP 和反向代理服务器&#xff0c;也可以用于 IMAP/POP3 代理服务器。Nginx 因其采用的异步非阻塞工作模型&#xff0c;使其具备高并发、低资源消耗的特性。高度模块化设计也使得 Nginx 具备很好的扩展性&#xff0c;在处理静…

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维护与修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维护与修理》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国汽车维修行业协会 …

PHP智慧小区物业管理小程序

&#x1f31f;智慧小区物业管理小程序&#xff1a;重塑社区生活&#xff0c;开启便捷高效新篇章 &#x1f31f; 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序&#xff0c;它犹如一股清新的科技之风&#xff0c;吹进了现代智慧小区的每一个角落…

洛谷P4868 Preprefix sum

洛谷传送门 题目描述 前缀和&#xff08;prefix sum&#xff09;&#x1d446;&#x1d456;。 前前缀和&#xff08;preprefix sum&#xff09;则把 &#x1d446;&#x1d456; 作为原序列再进行前缀和。记再次求得前缀和第 &#x1d456; 个是 &#x1d446;&#x1d446…

机器学习中的凸函数和梯度下降法

一、凸函数 在机器学习中&#xff0c;凸函数 和 凸优化 是优化问题中的重要概念&#xff0c;许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。 1. 什么是凸函数&#xff1f; 数学定义 一个函数 f…

Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt布局系统(Layouts) 布局管理器基础 高级布局技巧 嵌套布局 设置间距和边距 常用控件详解 按钮类控件 QPushButton (标准按钮) QRadioButton (单选按钮) QCheckBox (复选框) …

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一个新的字符串实例方法&#xff1a;String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…

生产管理看板助力节能科技公司实现数据自动化管理

在节能科技公司的生产过程中&#xff0c;数据管理的自动化是提高生产效率和产品质量的关键。然而&#xff0c;许多公司在数据记录、展示、对比和存档方面仍面临诸多痛点&#xff0c;如产品检测数据无法自动记录、缺乏直观的产线状态展示、检测数据对比繁琐耗时&#xff0c;以及…

【C++】B2112 石头剪子布

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述游戏规则&#xff1a;输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a;解题分析与实现 &#x1f4af;我的做法实现逻辑优点与不足 &#x1f4af…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…

微服务之松耦合

参考&#xff1a;https://microservices.io/post/architecture/2023/03/28/microservice-architecture-essentials-loose-coupling.html There’s actually two different types of coupling: runtime coupling - influences availability design-time coupling - influences…

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,1…

一步到位Python Django部署,浅谈Python Django框架

Django是一个使用Python开发的Web应用程序框架&#xff0c;它遵循MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;旨在帮助开发人员更快、更轻松地构建和维护高质量的Web应用程序。Django提供了强大的基础设施和工具&#xff0c;以便于处理复杂的业务逻…

Apache PAIMON 学习

参考&#xff1a;Apache PAIMON&#xff1a;实时数据湖技术框架及其实践 数据湖不仅仅是一个存储不同类数据的技术手段&#xff0c;更是提高数据分析效率、支持数据驱动决策、加速AI发展的基础设施。 新一代实时数据湖技术&#xff0c;Apache PAIMON兼容Apache Flink、Spark等…

《计算机网络》课后探研题书面报告_了解PPPoE协议

PPPoE协议的工作原理与应用分析 摘 要 PPPoE&#xff08;Point-to-Point Protocol over Ethernet&#xff09;是一种广泛应用于宽带接入的网络协议&#xff0c;特别是在DSL&#xff08;数字用户线路&#xff09;和光纤网络中具有重要的应用价值。PPPoE结合了PPP协议的认证、加…

MAC上安装Octave

1. 当前最新版Octave是9.3版本&#xff0c;需要把mac os系统升级到14版本&#xff08;本人之前的版本是10版本&#xff09; https://wiki.octave.org/Octave_for_macOS octave的历史版本参考此文档&#xff1a;Octave for macOS (outdated) - Octavehttps://wiki.octave.org/Oc…

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库&#xff1a; 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图&#xff0c;该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件&#xff0c;文件内容及各配置项内容如下图&#xff0c;需要先将配置项【skip-grant-tab…

VSCode连接Github的重重困难及解决方案!

一、背景&#xff1a; 我首先在github创建了一个新的项目&#xff0c;并自动创建了readme文件其次在vscode创建项目并写了两个文件在我想将vscode的项目上传到对应的github上时&#xff0c;错误出现了 二、报错及解决方案&#xff1a; 1.解决方案&#xff1a; 需要在git上配置用…