uniapp 实现下拉刷新 下滑更新

news2024/12/23 6:55:17

效果图

在这里插入图片描述
在app或者小程序中向下滑动 会出现刷新数据 ,而上拉到底 需要更新数据

功能实现

主要俩种方式

依赖生命周期

在page.json中开启
在这里插入图片描述
page.json

		"style" : 
			{
				"navigationBarTitleText" : "小小练习",
				"backgroundTextStyle": "dark",
				"enablePullDownRefresh": true
				}

开启后页面监听onPullDownRefresh()顶部下拉事件,onReachBottom触底事件

<template>

   <view class="content">
   	
   
					<view v-for="(item, index) in cats" :key="index">
					  <image :style="{ width: item.width/2 + 'rpx', height: item.height/2 + 'rpx' }" :src="item.url"></image>
					</view>
				
			</view>
 <view class="float">
 	<view class="item">顶部</view>
 	<view class="item">刷新</view>
 </view>
</template>

<script setup>
import { reactive,  onMounted } from 'vue';

const cats = reactive([]);
onPullDownRefresh(() => {
    console.log('触发下拉刷新了');
    // 进行下拉刷新的操作,比如重新加载数据等
    refresh(); // 这里调用你封装的刷新数据的方法
    uni.stopPullDownRefresh();
});
onReachBottom(()=>{
	console.log('触底时间')
	PullDownRefresh()
})
 const PullDownRefresh= (()=>{
	     uni.showLoading({
	     	title:'加载中',
			duration:1000
	     })
	 	    console.log('触发滑动区域刷新了')
	 	    // 停止当前页面下拉刷新
			refresh()
	 	  
	 	  
 }) 
 const addrefresh=()=>{
	 console.log('滑动到进行更新')
	uni.request({
	  url: 'https://api.thecatapi.com/v1/images/search?limit=2',
	  
	  success(res) {
	    console.log('获取接口成功', res);
	    // cats.length = 0; // 不清空清空数组
	    res.data.forEach(item => {
	      cats.push(item); // 将接口数据逐个添加到cats数组中
	    });
	  },
	  fail: (e) => {
	    console.log('获取接口失败');
	  }
	
	});
 }
const refresh=()=>{
	uni.request({
	  url: 'https://api.thecatapi.com/v1/images/search?limit=2',
	  success(res) {
	    console.log('获取接口成功', res);
	    cats.length = 0; // 不清空清空数组
	    res.data.forEach(item => {
	      cats.push(item); // 将接口数据逐个添加到cats数组中
	    });
	  },
	  fail: (e) => {
	    console.log('获取接口失败');
	  }
	});
}
onMounted(() => {
refresh()
});
</script>

<style lang="scss" scoped>
/* 样式 */
.float{
	position: absolute;
	right: 30rpx;
	bottom: 100rpx;
	.item{
		width: 90rpx;
		height: 90rpx;
		background: rgba(165, 213, 255, 0.0);
		border-radius: 50%;
		align-items: center;
		justify-content: center;
		padding-bottom: env(safe-area-inset-bottom);
		display: flex;
		border: 1px solid rebeccapurple;
		margin-bottom: 15rpx;
	}
}
</style>

依赖滚动视图组件

在这里插入图片描述
主要依赖这俩个事件
在这里插入图片描述

<template>

					<scroll-view @scrolltoupper="PullDownRefresh" scroll-y="true" style="height: 1080rpx;" class="scroll-Y" @scrolltolower="addrefresh"
						>
					<view v-for="(item, index) in cats" :key="index">
					  <image :style="{ width: item.width/2 + 'rpx', height: item.height/2 + 'rpx' }" :src="item.url"></image>
					</view>
					</scroll-view>
			
 <view class="float">
 	<view class="item">顶部</view>
 	<view class="item">刷新</view>
 </view>
</template>

<script setup>
import { reactive,  onMounted } from 'vue';

const cats = reactive([]);
 
 const PullDownRefresh= (()=>{
	     uni.showLoading({
	     	title:'加载中',
			duration:1000
	     })
	 	    console.log('触发滑动区域刷新了')
	 	    // 停止当前页面下拉刷新
			refresh()
	 	  
	 	  
 }) 
 const addrefresh=()=>{
	 console.log('滑动到进行更新')
	uni.request({
	  url: 'https://api.thecatapi.com/v1/images/search?limit=2',
	  
	  success(res) {
	    console.log('获取接口成功', res);
	    // cats.length = 0; // 不清空清空数组
	    res.data.forEach(item => {
	      cats.push(item); // 将接口数据逐个添加到cats数组中
	    });
	  },
	  fail: (e) => {
	    console.log('获取接口失败');
	  }
	
	});
 }
const refresh=()=>{
	uni.request({
	  url: 'https://api.thecatapi.com/v1/images/search?limit=2',
	  success(res) {
	    console.log('获取接口成功', res);
	    cats.length = 0; // 不清空清空数组
	    res.data.forEach(item => {
	      cats.push(item); // 将接口数据逐个添加到cats数组中
	    });
	  },
	  fail: (e) => {
	    console.log('获取接口失败');
	  }
	});
}
onMounted(() => {
refresh()
});
</script>

这种方式没有自带的动画 并且需要设置滑动区域的高度,不然可能滑倒底部没数据了但是由于没有到组件底部无法触发事件

当上拉更新数据过多时,想要在滑动顶部进行更新数据时候,就需要滑动很长事件,所以可以使用uni.pageScrollTo(OBJECT) 快速到达页面指定位置
在这里插入图片描述

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

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

相关文章

Linux环境部署与命令技巧

Linux环境部署与命令技巧 安装Java 首先确保已经安装了Java。通过运行以下命令检查Java是否已安装&#xff1a; java -version # 查看Java版本如果未安装Java&#xff0c;可以使用以下命令安装OpenJDK&#xff1a; sudo yum install java-11-openjdk # 安装OpenJDK 11创建一个…

用Swagger(工具Knife4j )代替postman来进行构建、测试和调试 API

什么是Swagger&#xff1f; Swagger 是一个用于设计、构建和文档化 RESTful Web 服务的开源框架。它允许开发者设计 API&#xff0c;然后生成对应的 API 文档&#xff0c;提供给团队成员或者第三方开发者查阅。Swagger 的核心是 OpenAPI 规范&#xff08;之前称为 Swagger 规范…

来学习线程啦

线程的相关概念 程序 简单点说&#xff1a;程序就是我们写的代码&#xff1b;也可以理解为&#xff1a;为完成特定任务&#xff0c;用某种语言编写的一组指令的集合 进程 进程是指运行中的程序。 比如&#xff1a;我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系…

Centos 6.10 安装oracle10.2.0.1

由于阿里云机房要下架旧服务器&#xff0c;单位未购买整机迁移服务&#xff0c;且业务较老不兼容Oracle11g&#xff0c;所以新购买一台新服务器进行安装Oracle10.2.0.1 &#xff0c;后续再将数据迁移到新服务器上。 对外ip 内部ip 数据库版本 操作系统版本 实例名 源库 1…

【MATLAB】Enigma机加密原理与自实现

文章目录 什么是EnigmaEnigma机加密通信流程Enigma的物理构造Enigma的加密设置Enigma加密通信密码重新设置Enigma加密消息拼接注意 Enigma的解密分解设置Enigma解密通信密码重新设置Enigma解密消息 Enigma的弱点MATLAB自实现Enigma加密与解密Enigma_functionRotate_functiontes…

排序(一)----冒泡排序,插入排序

前言 今天讲一些简单的排序,冒泡排序和插入排序,但是这两个排序时间复杂度较大,只是起到一定的学习作用,只需要了解并会使用就行,本文章是以升序为例子来介绍的 一冒泡排序 思路 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的序列&#xff0c;每次比较相邻…

K8S内容

K8S介绍 1、故障迁移:当某一个node节点关机或挂掉后&#xff0c;node节点上的服务会自动转移到另一个node节点上&#xff0c;这个过程所有服务不中断。这是docker或普通云主机是不能做到的 2、资源调度:当node节点上的cpu、内存不够用的时候&#xff0c;可以扩充node节点&…

详细分清Session,Cookie和Token之间的区别,以及JWT是什么东西

Cookie Cookie是一种小型的文本文件&#xff0c;由网站在用户访问时存储在其计算机或移动设备上&#xff0c;Cookie主要用于跟踪、识别和存储有关用户的信息。 简单来说Cookie就是用来存储某些后端发送给前端的数据&#xff0c;例如我们登陆后&#xff0c;后端会返回一个登录…

求正方形阴影部分面积

正方形边长6&#xff0c;求阴影部分面积 xy6① vw6② 1/26v1/23x1/263③ 1/26v1/26y1/266④ ③是左下角三角形的面积&#xff0c;④是左上角三角形的面积。 求解方程组得到x2 阴影部分面积1/2*3x3.

海豚调度器如何看工作流是在哪个worker节点执行

用海豚调度器&#xff0c;执行一个工作流时&#xff0c;有时成功&#xff0c;有时失败&#xff0c;怀疑跟worker节点环境配置不一样有关。要怎样看是在哪个worker节点执行&#xff0c;在 海豚调度器 Web UI 中&#xff0c;您可以查看任务实例&#xff0c;里面有一列显示host&a…

网络安全快速入门(九)MySQL进阶操作

上一章我们了解了对表及库的基本增删查改操作&#xff0c;本章我们针对增删查改内容进行与一些拓展&#xff0c; 9.1字段修饰及数据类型 我们之前在创建表时用到的格式为&#xff1a; create table 表名 ( 字段名1 字段数据类型&#xff08;数据类型长度&#xff09;, 字段名2 …

刷代码随想录有感(65):回溯算法——组合问题

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<vector<int>> res;vector<int> tmp;void backtracking(int n, int k, int start){if(tmp.size() k){res.push_back(tmp);return;}for(int i start; i < n; i){tmp.push_back(i);bac…

[Algorithm][回溯][组合][目标和][组合总和]详细讲解

目录 1.组合1.题目链接2.算法原理详解3.代码实现 2.目标和1.题目链接2.算法原理详解3.代码实现 3.组合总和1.题目链接2.算法原理详解3.代码实现 1.组合 1.题目链接 组合 2.算法原理详解 思路&#xff1a;每次都只选一个数&#xff0c;此后只能选它后面的数函数设计&#xff…

全面提升数据采集效率:亮数据产品的应用与评估详解

全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解 文章目录 全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解背景应用场景&#xff1a;平台首页信息抓取准备评测素材详细的产品使用和评测流程产品介绍亮数据的IP代理服务亮数据的爬虫工具及采集技术 注…

elasticsearch使用Ngram实现任意位数手机号搜索

文章目录 Ngram自定义分词案例实战问题拆解 Ngram分词器定义Ngram分词定义Ngram分词示例Ngram分词应用场景 Ngram分词实战 Ngram自定义分词案例 当对keyword类型的字段进行高亮查询时&#xff0c;若值为123asd456&#xff0c;查询sd4&#xff0c;则高亮结果是&#xff1c;em&a…

项目管理-案例重点知识(整合管理)

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 一、整合管理 案例重点 重点内容&#xff1a; &#xff08;1&#xff09;项目章程内容和作用 &#xff08;2&#xff09;项目管理计划…

乡村振兴的农业科技创新:加大农业科技投入,推广农业科技成果,提升农业科技创新水平,推动美丽乡村农业现代化

一、引言 随着全球化和信息化时代的到来&#xff0c;农业作为国民经济的基础&#xff0c;其现代化进程日益受到关注。在乡村振兴战略的大背景下&#xff0c;农业科技创新成为推动乡村经济转型升级、实现农业现代化的关键力量。本文旨在探讨如何通过加大农业科技投入、推广农业…

【PB案例学习笔记】-02 目录浏览器

写在前面 这是PB案例学习笔记系列文章的第二篇&#xff0c;该系列文章适合具有一定PB基础的读者&#xff0c; 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上…

蓝桥杯单片机之模块代码《串口发数据》

过往历程 历程1&#xff1a;秒表 历程2&#xff1a;按键显示时钟 历程3&#xff1a;列矩阵按键显示时钟 历程4&#xff1a;行矩阵按键显示时钟 历程5&#xff1a;新DS1302 历程6&#xff1a;小数点精确后两位ds18b20 历程7&#xff1a;35定时器测量频率 历程8&#xff…

初识鸿蒙之ArkTS基础

前言 学习一种应用程序开发&#xff0c;需要从这种程序的开发语言开始&#xff0c;比如说Android开发从入门到放弃&#xff0c;肯定是从Java基础或者是Kotlin语言基础开始学习的&#xff0c;IOS程序开发也肯定是从object-c开始学习的。鸿蒙软件开发也不例外&#xff0c;如果做…