uniapp 实现下拉刷新 下滑更新

效果图

在这里插入图片描述
在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) 快速到达页面指定位置
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transformer模型详解05-Decoder 结构

文章目录 简介结构原理第一个 Multi-Head Attention第二个 Multi-Head AttentionSoftmax 预测输出单词 简介 Transformer 模型由编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;两部分组成。这里我会着重描述解码器的结构以及在预训练、输入输…

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息&#xff1a; 原文链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/4…

期权(1):基本概念,权利金,定金,买方,卖方,零和游戏,对赌协议

期权是合约&#xff0c;权利金就是定金&#xff01; 合约到期时 买方可以选择行权&#xff0c;也可以选择不行权。代价就是定金损失。因此亏损封顶&#xff0c;但盈利无限。卖方赚的就是买方的定金&#xff0c;盈利封顶&#xff0c;但亏损无限。 从这里&#xff0c;我们看出…

短视频拍摄+直播间搭建视觉艺术实战课:手把手场景演绎 从0-1短视频-8节课

抖音短视频和直播间你是否遇到这些问题? 短视频是用手机拍还是相机拍?画面怎么拍都没有质感 短视频产量低&#xff0c;拍的素材可用率低 看到别人用手机就能把短视频拍好自己却无从下手 明明已经打了好几盏灯了,但是画面还是比较暗 直播软件参数不会设置&#xff0c;电脑…

【Python探索之旅】列表

目录 特点 入门 访问元素 新增元素 修改元素 插入元素 删除元素 完结撒花 前言 在Python中&#xff0c;列表(List)是最常用的数据结构之一&#xff0c;类似于其他语言&#xff0c;如Java&#xff0c;与其不同啊Python中不需要声明数据类型。它提供了一种灵活且高效的方式…

MySQL创建索引报错 Specified key was too long;max key length is 1000 bytes.

MySQL对创建索引的大小有限制&#xff0c;一般索引键最大长度总和不能超过1000个字节。 问题描述 MySQL创建索引时报错 Specified key was too long;max key length is 1000 bytes. 解决办法 (1) 修改存储引擎 InnoDB的索引字段长度限制大于MyISAM&#xff0c;可以尝试改成…

ansible利用playbook 部署lamp架构

搭建参考&#xff1a;ansible批量运维管理-CSDN博客 定义ansible主机清单 [rootansible-server ~]# vim /etc/hosts 192.168.200.129 host01 192.168.200.130 host02 [rootansible-server ~]# vim /etc/ansible/hosts [webserver] host01 host02 在ansible端编写index.html…

【windows小知识#1】ISO镜像,OEM、Retail这些到底是什么意思

汇总一下每个版本windows会衍生哪些镜像出来&#xff0c;以windows7为例 这些文件名代表的是不同版本和不同语言的Windows 7操作系统的安装光盘映像&#xff08;ISO文件&#xff09;。这些文件主要区分为以下几个方面&#xff1a; 语言&#xff1a;这些文件都是中文版&#x…

平地惊雷,GPT-4o 凌晨震撼发布

GPT-4o 今日凌晨&#xff0c;OpenAI 2024 年春季发布会召开&#xff0c;OpenAI 通过短短 28 分钟的发布会&#xff0c;发布了「再次震惊世界」的 GPT-4o&#xff0c;其中 o 是指 omni&#xff08;全能&#xff09;的意思。 一款「全新交互&#xff08;支持 文本/音频/视频 组合…

【AI学习】聊两句昨夜OpenAI的GPT-4o

蹭个热点&#xff0c;聊两句昨夜的大事件——OpenAI发布GPT-4o&#xff0c;我看到和想到的一点东西。 首先是端到端方法&#xff0c;前面关于深度学习的文章&#xff0c;对端到端的重要性做了一些学习&#xff0c;对端到端这个概念有了一些理解。正如Richard Sutton在《苦涩的…

直播预约丨《袋鼠云大数据实操指南》No.2:实时开发,如何成为数据智能化的有效驱动力

近年来&#xff0c;新质生产力、数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮&#xff0c;持续冲击并革新着企业数字化转型的观念视野&#xff0c;昭示着一个以数据为核心驱动力的新时代正稳步启幕。 面对这些引领经济转型的新兴概念&#xff0c;为了更好地服务于客户…

C语言中的混合运算

1 混合运算 类型强制转换场景 整型数进行除法运算时&#xff0c;如果运算结果为小数&#xff0c;那么存储浮点数时一定要进行强制转换。例子&#xff1a; #include <stdio.h> //运算强制转换 int main(void) {int i5;//整型float ji/2;//这里做的是整型运算&#xff0…

【Linux取经路】进程通信之匿名管道

文章目录 一、进程间通信介绍1.1 进程间通信是什么&#xff1f;1.2 进程间通信的目的1.3 进程通信该如何实现 二、管道2.1 匿名管道2.1.1 站在文件描述符角度深入理解管道2.1.2 接口使用2.1.3 PIPE_BUFFER 和 Pipe capacity2.1.4 管道中的四种情况2.1.5 管道特征总结 2.2 匿名管…

PDF文件转换为CAD的方法

有时候我们收到一个PDF格式的设计图纸&#xff0c;但还需要进行编辑或修改时&#xff0c;就必须先将PDF文件转换回CAD格式。分享两个将PDF转换回CAD的方法&#xff0c;一个用到在线网站&#xff0c;一个用到PC软件&#xff0c;大家根据情况选择就可以了。 ☞在线CAD网站转换 …

STM32 CANFD 基础知识留档

讲得比较细的文章但可能有问题自行判定 附1 附2 前言 CAN2.0 协议中数据段波特率和仲裁段波特率默认是一致&#xff0c;因此只需要关注传输波特率即可 CANFD 协议是向下兼容 CAN2.0 的数据通讯&#xff0c;因此实际使用中需要配置 STM32H7 系列支持的标准是 Compliant with …

vue-cropper裁剪图片 vue

效果图 1.配置环境 npm install vue-cropper 2.代码 <template><div class"cropper-content"><div class"cropper-box"><div class"cropper"><vue-cropper ref"cropper" :img"option.img" :…

手撸XXL-JOB(三)——本地定时任务管理平台

引言 在XXL-JOB中&#xff0c;有一个xxl-job-admin项目&#xff0c;这个就相当于定时任务的调度平台&#xff0c;我们参考XXL-JOB&#xff0c;也添加这么一个调度平台&#xff0c;由于篇幅有限&#xff0c;我们先实现一个本地的定时任务调度平台&#xff0c;至于如何调用远程的…

element-ui的表单中,输入框、级联选择器的长度设置

使用<el-col>控制输入框的长度 <el-form-item label"姓名" label-width"80px"><el-col :span"15"><el-input v-model"form.name" autocomplete"off"></el-input></el-col></el-form…

图片制作二维码的3个步骤,适合多种图片格式使用

现在二维码经常被用来作为内容存储和展示的用途使用&#xff0c;从而减少对内存的空间占用&#xff0c;并且提升其他人获取图片的便捷性&#xff0c;通过扫码来快速查看。在很多的应用场景下都会用到这种方式来分享图片&#xff0c;与其他传输方式相比更加的简单快捷。那么如何…

k8s 网络组件详细 介绍

目录 一 k8s 有哪些网络组件 二 k8s 网络概念 1&#xff0c; k8s 三种网络 2&#xff0c;K8S 中 Pod 网络通信 2.1 Pod 内容器与容器之间的通信 2.2 同一个 Node 内 Pod 之间的通信 2.3 不同 Node 上 Pod 之间的通信 三 Flannel 网络组件 1&#xff0c;Flannel …