当前位置: 首页 > article >正文

uniapp业务实现

uni.requset添加异常判断提示,以及加载动画


	/**
	 * 该函数用于发送网络请求获取数据
	 * 请求失败时会弹出相应的错误提示
	 * 请求成功时会检查返回的数据是否存在错误,并根据错误代码做出相应处理
	 * 如果数据请求成功且无错误,则将返回的数据赋值给pets变量
	 */
	function notwork() {
		//显示页面加载动画
		// uni.showLoading();
		//显示标题加载动画
		uni.showNavigationBarLoading()
		// 发起网络请求,使用uni.request方法请求数据
		uni.request({
			// 请求的URL地址
			url: 'https://tea.qingnian8.com/tools/taoShow',
			// 请求的参数,指定每次请求返回数据的大小
			data: {
				size: 10
			},
			// 请求头,添加访问密钥以认证请求身份
			header: {
				'access-key': "581428"
			}
		}).then((res) => {

			// 检查请求返回的数据是否包含错误
			if (res.data.errCode === 0) {
				// 如果没有错误,则将返回的数据赋值给pets变量
				pets.value = res.data
			} else if (res.data.errCode === 400) {
				// 如果返回的错误代码为400,则弹出错误信息提示
				uni.showToast({
					title: res.data.errMsg,
					icon: 'none',
					duration: 1500
				})
			}
		}).catch((err) => {

			// 如果请求失败,则弹出错误提示,提示用户刷新页面
			uni.showToast({
				title: '请求有误,请重新刷新',
				icon: 'none',
				duration: 1500
			})
		}).finally(() => {
			// 取消页面加载动画
			// uni.hideLoading();
			//取消标题加载动画
			uni.hideNavigationBarLoading()
			// 请求失败后的最终操作,此处打印一条日志信息
			console.log('校验结束');
		})
	}

实现触底加载


//页面触底事件
onReachBottom(() => {
//调用uni.request重新渲染数据
	notwork()
})

使用解构的方式,为数组底部添加数据,实现触底刷新

// 检查请求返回的数据是否包含错误
		if (res.data.errCode === 0) {
			// 如果没有错误,则将返回的数据赋值给pets变量
			pets.value = [...pets.value, ...res.data.data]
		} else if (res.data.errCode === 400) {
			// 如果返回的错误代码为400,则弹出错误信息提示
			uni.showToast({
				title: res.data.errMsg,
				icon: 'none',
				duration: 1500
			})
		}

底部触底安全区和触底加载动画组件

.loadMore {
				padding-bottom: calc(env(safe-area-inset-bottom) + 80rpx)
			}

加载组件

分段组件




<uni-segmented-control :current="current" :values="[11,22,33]" @clickItem="onClickItem" styleType="button"
				activeColor="#4cd964"></uni-segmented-control>

属性分析

:current
  • 作用:当前选中的索引。
  • 类型:Number。
  • 默认值:0。
  • 说明:表示当前选中的标签索引。
:values
  • 作用:所有的选项数组,每个元素代表一个可选的标签名称。
  • 类型:Array。
@clickItem
  • 作用:当选中的项发生变化时触发的事件。
  • 类型:Function。
  • 说明:当用户点击某个标签时,会触发这个事件,并传递一个事件对象 e,其中包含当前选中的索引。
styleType
  • 作用:样式类型,设置为按钮样式。
  • 类型:String。
  • 默认值text
  • 说明:这里设置为 button,表示标签将以按钮的形式展示。
activeColor
  • 作用:选中状态的文字颜色。
  • 类型:String。
  • 说明:设置选中状态的文字颜色为 #4cd964

轮播图实现



	<!-- 定义轮播图区域 -->
		<view class="banner">
			<!-- 使用swiper组件实现轮播效果,配置指示器颜色和自动播放 -->
			<swiper indicator-dots indicator-color="rgba(255, 255,255, 0.5)" indicator-active-color="#fff" autoplay>
				<!-- 遍历swiperTop数组,为每个轮播图项创建swiper-item -->
				<swiper-item v-for="item in swiperTop" :key="item.id">
					<!-- 为每个swiper-item添加图片,图片源由item.url指定 -->
					<image :src="item.url"></image>
				</swiper-item>
			</swiper>
		</view>

/**
 * 定义.banner类的样式,用于设置轮播图的容器样式
 */
.banner {
	// 设置轮播图容器的宽度为750rpx,确保在不同设备上的显示效果一致
	width: 750rpx;
	// 设置轮播图容器的内边距,上下各30rpx,实现内容与边界的间距
	padding: 30rpx 0;

	/**
	 * 定义swiper类的样式,用于设置轮播图的样式
	 */
	swiper {
		// 设置轮播图的宽度为750rpx,确保轮播图填满其容器
		width: 750rpx;
		// 设置轮播图的高度为340rpx,控制轮播图的展示大小
		height: 340rpx;

		/**
		 * 定义swiper-item类的样式,用于设置轮播图中每个轮播项的样式
		 */
		swiper-item {
			// 设置轮播项的宽度为100%,确保轮播项填满swiper容器
			width: 100%;
			// 设置轮播项的高度为100%,确保轮播项填满swiper容器
			height: 100%;
			// 设置轮播项的内边距,左右各30rpx,实现内容与边界的间距
			padding: 0 30rpx;

			/**
			 * 定义image类的样式,用于设置轮播图中图片的样式
			 */
			image {
				// 设置图片的宽度为100%,确保图片填满轮播项
				width: 100%;
				// 设置图片的高度为100%,确保图片填满轮播项
				height: 100%;
				// 设置图片的圆角为10rpx,实现图片边角的圆滑过渡效果
				border-radius: 10rpx;
			}
		}
	}
}

//顶层轮播图数据
var swiperTop = ref([{
	id: 1,
	url: '../../common/images/banner1.jpg'
}, {
	id: 2,
	url: '../../common/images/banner2.jpg'
}, {
	id: 3,
	url: '../../common/images/banner3.jpg'
}])

图片预览


/**
 * 预览图片函数
 * 
 * 该函数用于预览一系列图片中的某一张
 * 它首先收集所有宠物的图片URL,然后使用uni.previewImage方法进行预览
 * 
 * @param {number} index 需要预览的图片的索引
 */
function onPreview(index) {
	// 收集所有宠物的图片URL
	var urls = pets.value.map(item => item.url)
	// 使用uni.previewImage方法预览图片,传入当前图片的索引和所有图片的URL列表
	uni.previewImage({
		current: index,
		urls: urls
	})
}


http://www.kler.cn/news/302719.html

相关文章:

  • MATLAB-基于高斯过程回归GPR的数据回归预测
  • 解决CORS问题的两种方式——Django+vue
  • Linux中的scp 如何使用
  • 【STM32 Blue Pill编程】-定时器输入捕获与频率计数
  • 总结拓展九:SAP数据迁移(2)
  • Oracle Linux 8.10安装Oracle19c(19.3.0)完整教程
  • 视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践
  • HarmonyOS开发5.0【应用程序包】
  • AI大模型的架构演进与最新发展
  • git解决同时编辑一个文件的冲突
  • 设计模式之工厂模式(通俗易懂--代码辅助理解【Java版】)
  • 【Python】Python办公自动化案例(一):对比两个word文档并找出不同
  • Vue的slot插槽(默认插槽、具名插槽、作用域插槽)
  • 零宽字符应用场景及前端解决方案
  • 面试真题 | web自动化关闭浏览器,quit()和close()的区别
  • SpringBoot之基础Web开发
  • ubuntu22安装docker
  • iPhone 16正式亮相:5款配色 群青色抢眼
  • C++ 中的默认删除特征:管理资源与防止意外拷贝
  • 【通俗理解】二项分布的均值与方差——从成功与失败的概率看分布
  • python如何加速计算密集型任务2?
  • 【C#】DrawCurve的用法
  • 【C++开发中使用JSON的妙用】
  • JVM——Java虚拟机内存初识(面经篇之JVM内存)
  • Gin 自带日志系统:深入理解与自定义
  • 【VUE】实现当前页面刷新,刷新当前页面的两个方法(如何在一个页面写一个方法提供给全局其他地方调用)(如何重复调用同一个路由实现页面的重新加载)
  • Unity 给模型贴上照片
  • 软件测试工程师面试整理-测试类型
  • vue+IntersectionObserver + scrollIntoView 实现电梯导航
  • 【机器人建模和控制】读书笔记