uniapp 右侧刷新图标 和 返回顶部图标的实现

javascript 复制代码
<template>
	<view class="container">
		<view class="layout">
			<view class="box" v-for="(item,index) in pets" :key="item._id">
				<view class="pic">
					<image :src="item.url" mode="widthFix" @click="onPreview(index)"></image>
				</view>
				<view class="text">{{item.content }}</view>
				<view class="author">---- {{item.author}}</view>
			</view>
		</view>
		<!-- 按钮刷新和返回顶部 -->
		<view class="float">
			<view class="item" @click="onRefresh">
				<!-- 组件->图标 -->
				<uni-icons type="refreshempty" size="30" color="#888"></uni-icons>
			</view>
			<view class="item" @click="onTop">
				<uni-icons type="up" size="30" color="#888"></uni-icons>
			</view> 
			<view class="box"></view>
		</view>
		
		<!-- 加载更多 -->
		<view class="loadMore">
			<uni-load-more status="more"></uni-load-more>
		</view>
	</view>
</template>
javascript 复制代码
<script setup>
import { ref } from 'vue';
//触底加载更多  ,下拉刷新API(下拉刷新需要在pages.json里面开启这项功能)
import {onReachBottom,onPullDownRefresh} from "@dcloudio/uni-app"
	const pets = ref([]);
	
	// 触底加载更多,实现连接,使用展开符
	// let arr1 = [1,2,3];
	// let arr2 = [4,5,6];
	// console.log([...arr1,...arr2]);
	
	// 点击预览
	const onPreview = function (index){
		let urls = pets.value.map(item=>item.url)
		uni.previewImage({
			current:index,
			urls
		})
		// console.log(index);
	}
	
	// 点击刷新
	const onRefresh = function(){
		console.log("刷新");
		// API->界面->下拉刷新
		uni.startPullDownRefresh()
	}
	// 返回顶部
	const onTop = function(){
		console.log("返回顶部");
		// API->界面->滚动
		uni.pageScrollTo({
			duration:1000,
			scrollTop:0
			
		})
	}
	
	// 发送网络请求
	function network(){
		uni.showLoading()
		uni.request({
			url:"https://tea.qingnian8.com/tools/petShow",
			data:{
				size:5,
				type: "dog"      //类型有all,cat,dog
			},
			header:{
				"access-key": "xxm456654#@"
			}
		}).then(res=>{
			console.log(res.data.data);
			console.log(res.data.errCode);
			if(res.data.errCode===0){
				// pets.value = res.data.data
				// 触底加载更多 ,展开符
				pets.value = [...pets.value,...res.data.data]
				console.log(pets.value);
			}else if(res.data.errCode===400){
				uni.showToast({
					title:res.data.errMsg,
					icon:"none"
				})
			}
			
		}).catch(err=>{
			uni.showToast({
				title:"请求有误,请重新刷新",
				icon:"none"
			})
		}).finally(()=>{
			uni.hideLoading();
			console.log(123);
			uni.stopPullDownRefresh();
		})
	};
	// 触底加载更多
	onReachBottom(()=>{
		network();
	})
	
	// 下拉刷新
	onPullDownRefresh(()=>{
		pets.value = [];// current.value = 0
		network();
	})
	network();
</script>

相关推荐
anyup_前端梦工厂2 小时前
了解几个 HTML 标签属性,实现优化页面加载性能
前端·html
前端御书房2 小时前
前端PDF转图片技术调研实战指南:从踩坑到高可用方案的深度解析
前端·javascript
2301_789169542 小时前
angular中使用animation.css实现翻转展示卡片正反两面效果
前端·css·angular.js
风口上的猪20153 小时前
thingboard告警信息格式美化
java·服务器·前端
程序员黄同学3 小时前
请谈谈 Vue 中的响应式原理,如何实现?
前端·javascript·vue.js
快乐的二进制鸭4 小时前
uniapp实现app的pdf预览
pdf·uni-app
爱编程的小庄4 小时前
web网络安全:SQL 注入攻击
前端·sql·web安全
宁波阿成4 小时前
vue3里组件的v-model:value与v-model的区别
前端·javascript·vue.js
柯腾啊5 小时前
VSCode 中使用 Snippets 设置常用代码块
开发语言·前端·javascript·ide·vscode·编辑器·代码片段
weixin_535854225 小时前
oppo,汤臣倍健,康冠科技,高途教育25届春招内推
c语言·前端·嵌入式硬件·硬件工程·求职招聘