❤ Uniapp使用一(文档和 API 篇)

news2025/4/7 4:09:39

❤ Uniapp使用一(文档和 API 篇)

一、介绍

uni-app官网:https://uniapp.dcloud.io/api/media/image?id=previewimage
微信小程序官网:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html

二、使用

API篇

❤ API-页面和路由

uni.navigateBack 返回

进去页面触发
onShow(async () => {
	getList(1); //利用学员编号进行展示
})
uni.navigateBack({  
//uni.navigateTo跳转的返回,默认1为返回上一级
	delta: 1
});

❤ API-媒体图片

uniapp 实现图片预览 单图预览和多图预览

①单图预览

current对应就是0
urls:必须是单个某一条传入

预览一张图片,你的current传死就是0.所以urls也必须是字符串形式

@click="viewImg(item,index)"

// 缩放图片
	function viewImg(item,index){
		console.log(item.certificateImageUrl,index)
		let imgsArray = [];
		imgsArray[0] = item?.certificateImageUrl;
	      uni.previewImage({
	        current:0,
	        urls:imgsArray,
	      })
	}
②多图预览
@click="previewImage(index)"

previewImage(index) {
			let photoList = this.photos.map(item => {
				return item.src;
			});
			uni.previewImage({
				current: index,
				urls: photoList
			});
}

❤ API-媒体视频

uni.chooseVideo 选择视频

<view><button class="btnsaoma" @tap="test"  style="margin-top: 20rpx;">去视频识别分析</button></view>


<!-- 拍摄的视频部分start -->
		<uni-popup ref="popupvideo">
					<view class="guanbiclass">
						<view class="guanbiclasstop">
							请确认您拍摄的视频
						</view>
						<video :src="videosrc" style="width: 400rpx;height: 400rpx;margin: 0 115rpx;float: left;border-radius: 14rpx;margin-bottom: 60rpx;"></video>
						<view style="text-align: center;margin-top: 30rpx;">
							<button class="mini-btn" type="default" style="background-color: #0E77FF;color: #fff;" size="mini" @click="closevideo()">重拍</button>
							<button style="margin-left: 20rpx;background-color: #0E77FF;"  class="mini-btn" type="primary" size="mini"
								@click="submitvideo()">确认下一步</button>
						</view>
		
					</view>
		</uni-popup>
		
<!-- 拍摄的视频部分end -->

//方法
test: function () {
				let _this = this;
				uni.chooseVideo({
					mediaType:['video'],//类型
					sourceType: ['camera', 'album'],
					success: function (res) {
						console.log(res);
						const tempFilePathsvideo = res.tempFilePath;
						_this.videosrc = tempFilePathsvideo;
						_this.$refs.popupvideo.open('center');
						console.log(tempFilePathsvideo);
					}
				});
},


// 上传视频
uni.uploadFile({
							url: _this.$store.state.requestUrl +'', //接口地址
							filePath: _this.videosrc,
							name: 'file',
							formData: {
								'imei':'',//设备码
								'userId':_this.$store.state.userId,//用户ID(游客传0)
								'version': 2,
								'reportType':'',
								'isQueue':1,//否队列(0:等待响应报告ID;1:立即返回二维码)
								// 'file': _this.videosrc,
							},
							success: (uploadFileRes) => {
								console.log(uploadFileRes,'返回');
								console.log(uploadFileRes.data);
								// if(data.code==200){
								// 	// _this.$store.state.userId = data.data.userInfo.id;
								// 	// _this.msg = data.data;
								// }else{
								// 	uni.showToast({
								// 		title: data.msg,
								// 		icon: "none"
								// 	});
									
								// }
							}
});

保存视频 uni.saveVideoToPhotosAlbum

// 保存视频
	uni.saveVideoToPhotosAlbum({
				filePath: res.tempFilePath,
				success: function () {
				console.log('保存成功');
	}
});

uni.uploadFile(OBJECT) 上传图片、视频

媒体 /画面录制器 wx.createMediaRecorder

❤ API-界面弹窗

uni.showActionSheet(OBJECT)(从底部向上弹出操作菜单)

需要注意的是,uni.showToast 只支持基础样式的设置,如颜色、大小、边框等。如果需要更复杂的样式,可以考虑使用自定义组件或模态框等组件来实现。

uni.showModal(OBJECT)模态框

显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个API整合了 html 中:alert、confirm

uni.showModal({
	title: '提示',
	content: '这是一个模态弹窗',
	success: function (res) {
		if (res.confirm) {
			console.log('用户点击确定');
		} else if (res.cancel) {
			console.log('用户点击取消');
		}
	}
});

uniapp提示弹框

// uniapp提示弹框

uni.showToast({
	title: '成功提示',
	//将值设置为 success 或者直接不用写icon这个参数
	icon: 'success',
	//显示持续时间为 2秒
	duration: 2000
})  

// 加载提示弹框
//前端数据请求时,显示加载提示弹框
uni.showLoading({
	title: '加载中...'
});
// 数据从后端接口返回后,提示弹框关闭
uni.hideLoading();


// 加载提示
uni.showModal({
		title: '提示',
		content: '确认删除该条信息吗?',
		success: function(res) {
		if (res.confirm) {
		    // 执行确认后的操作
		} 
		else {
			// 执行取消后的操作
		}
	}
})


uni.showActionSheet({
	itemList: ['选项一', '选项二', '选项三'],
	success (res) {
	   // 选择其中任意一项后,获取其索引(res.tapIndex),从0开始
	   console.log(res.tapIndex) 
	},
	fail (res) {
	   // 取消后的操作
	}
})

❤ API-界面滚动

uni.pageScrollTo(OBJECT) 滚动

将页面滚动到目标位置。可以指定滚动到具体的scrollTop数值,也可以指定滚动到某个元素的位置

uni.pageScrollTo(将页面滚动到目标位置)

ID选择器:#the-id
元素: id="hexinzhibiao"

uni.pageScrollTo({
		// scrollTop: 0,
		selector:'#hexinzhibiao',
		duration: 300
});

uni.showLoading页面加载效果


//开始加载
uni.showLoading({
	title: "加载中" //为了网络慢,给用户的友好等待提示
});

//加载完成
uni.hideLoading(); //loading 弹窗end

❤ API - 数据缓存

本地数据存储

uniapp提供了一套uni存储API,可以在不同的平台上实现本地数据存储。

uni存储API包括以下几个方法:

uni.setStorage(key, value)
uni.getStorage(key)
uni.removeStorage(key)
uni.clearStorage()

使用uni存储API实现本地数据存储也很简单,只需要调用对应的存储方法即可。以下代码是将数据存储到uni存储中的实例:

// 存储数据
uni.setStorage({
  key: 'key',
  data: 'value',
  success: function () {
    console.log('数据保存成功');
  }
});

// 获取数据
uni.getStorage({
  key: 'key',
  success: function (res) {
    const data = res.data;
    console.log('获取数据成功:', data);
  },
  fail: function (err) {
    console.log(err);
  }
});

❤ API - 网络

发起请求

发送接口请求数据

uni.request({
	url: '/api/familyManagement/homePage/messageProcessing',
	method: 'get',
	dataType:'json',
	data:dataps,
	success(res) {
		if (res.data.code == 200) {
			uni.showToast({
				title: res.data.msg,
				icon: 'none',
				duration:2000,
			});
			console.log(res.data,'返回1');
			_this.getList();
			_this.tiao();
		} else {
			uni.showToast({
				title: res.data.msg,
				icon: 'none',
				duration:3000,
			})
		}
	},
	complete() {
		uni.hideLoading(); //loading 弹窗end
	},
	fail(err) {
		console.log('失败:', err);
	}
})

❤ API - 设备

uni.makePhoneCall(OBJECT) 拨打电话

uni.makePhoneCall({
	phoneNumber: '114' //仅为示例
});

❤ 教程-页面 - 生命周期

onUnload 监听页面卸载

onReachBottom 页面触底加载

页面触底加载(用于下拉加载分页和加载更多)

可在pages.json里定义具体页面底部的触发距离onReachBottomDistance,
比如设为50,那么滚动页面到距离底部50px时,就会触发onReachBottom事件。

如使用scroll-view导致页面没有滚动,则触底事件不会被触发。scroll-view滚动到底部的事件请参考scroll-view的文档。

在这里插入图片描述

与onShow 同级别
onReachBottom() {
			if (this.total > this.getUserHistoryReportList.length) {
				this.queryParams.pageNum++
				this.onlistin(); //执行的方法
			} else {}
},


getList 方法使用
getList() {
				let _this = this;
				uni.request({
					url:'/接口',
					method: 'GET',
					data: _this.queryParams,
					success(res) {
						console.log(res.data);
						if(_this.queryParams.pageNum==1){
							_this.getUserHistoryReportList  =res.data.rows;
						}else{
							_this.getUserHistoryReportList = [..._this.getUserHistoryReportList, ...res.data.rows];
						}
						_this.total = res.data.total;
					},
					fail(err) {
						 uni.showModal({
						      content: '请求失败'+ err.errMsg,
						      showCancel: false
						  });
						console.log('失败:', err);
					}
				})
	},

onPullDownRefresh 页面下拉刷新

和onLoad等生命周期函数同级,监听该页面用户下拉刷新事件

需要在 pages.json 里,找到的当前页面的pages节点,并在 style 选项中开启 enablePullDownRefresh。

当处理完数据刷新后,uni.stopPullDownRefresh 可以停止当前页面的下拉刷新。

在这里插入图片描述

// 下拉刷新
		onPullDownRefresh() {
			this.handleQuery();
			uni.stopPullDownRefresh(); //停止刷新
},

页面下拉刷新 uni.startPullDownRefresh(OBJECT)

开始下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。

页面针对不同类型设备禁止刷新
uni-app 中实现动态禁用/开启下拉刷新

https://ask.dcloud.net.cn/article/35134
在这里插入图片描述

❤ 教程-页面 - 文本、富文本标签

uniapp富文本和H5内容标签 v-html,uniapp rich-text、uparse、v-html(3种)
由于小程序端的限制,uni-app的富文本的处理与普通网页不同

有rich-text组件、v-html、和uParse三类方案

1. rich-text

rich-text是uni-app的内置组件,提供了高性能的富文本渲染模式。

API参考https://uniapp.dcloud.io/component/rich-text

优点
rich-text的优势是全端支持、高性能

缺点
只能整体设点击事情,无法对富文本中的图片、超链接单独设点击事件。

如果是图片,可以把内容拆成多个rich-text解决。rich-text不支持内嵌视频也可以通过拆分多个rich-text,中间插入video来实现。

注:h5和app-nvue无此限制,支持链接等单独点击。

  1. v-html

v-html指令,是web开发中很常用的。可惜由于小程序不支持html,使用场景受限。

在uni-app中,h5端,和app-vue的v3编译器下可以使用v-html。其他环境无法支持。

  1. uParse

由于小程序的rich-text组件在一些场景不满足需求,于是业内出现了wxparse等三方方案,把HTML或markdown格式的服务器数据源转为view来渲染。

但wxparse许久不更新,且不跨端,在uni-app插件市场出现了更多改进版的parse插件。

它们功能更强,支持直接渲染markdown或html的数据源为富文本,也支持其中的图片和超链接的点击处理,有的还支持表格和视频的处理。

但这些parser解决方案的性能不如rich-text。

注:app-nvue只能使用rich-text。

几种方案的特点讲清楚了,大家在开发中根据自己的需求选择合适的富文本渲染方案吧。

至于富文本编辑,即在输入框里图文混排内容,解决方案如下:

在h5、app-vue、微信小程序,支持editor组件

在h5中,传统的富文本编辑仍可使用

在非微信的其他小程序中,其官方没有提供解决方案,目前只能使用web-view组件套一个远程网页来满足这方面的需求。web-view组件是全端可用的解决方案。

还有一种方案,不再编辑区直接预览效果,而是采用markdown编辑器方案,输入区输入markdown语法,预览区提供预览。这种方案是跨端的。插件市场搜富文本编辑,有不少插件。http://ext.dcloud.net.cn/search?q=富文本编辑

富文本编辑editor组件

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

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

相关文章

使用WAF防御网络上的隐蔽威胁之SQL注入攻击

SQL注入攻击是一种普遍存在且危害巨大的网络安全威胁&#xff0c;它允许攻击者通过执行恶意的SQL语句来操纵或破坏数据库。 这种攻击不仅能够读取敏感数据&#xff0c;还可能用于添加、修改或删除数据库中的记录。因此&#xff0c;了解SQL注入攻击的机制及其防御策略对于保护网…

Spring基于AOP(面向切面编程)开发

概述 AOP为Aspect Oriented Programming的缩写&#xff0c;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续&#xff0c;是软件开发中的一个热点&#xff0c;也是Spring框架中的一个重要内容&…

使用WAF防御之网络上的隐蔽威胁(XSS攻击)

跨站脚本攻击&#xff08;XSS&#xff09;是一种常见且危险的威胁。它允许攻击者在用户浏览器上执行恶意脚本&#xff0c;窃取信息、篡改网页内容&#xff0c;甚至劫持用户会话。 什么是XSS攻击 定义&#xff1a;XSS攻击是一种代码注入技术&#xff0c;攻击者通过在目标网站上…

练习题 删除链表的倒数第N个结点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#…

潍坊数字孪生元宇宙赋能智能制造,助力工业制造业数字化转型

潍坊工业元宇宙数字孪生赋能智能制造&#xff0c;助力工业制造业数字化转型。在当今数字化时代&#xff0c;工业智能制造已成为制造业发展的必然趋势。潍坊市作为山东省的重要工业基地&#xff0c;积极探索数字孪生技术在工业智能制造领域的应用&#xff0c;为制造业企业数字化…

ant-design-vue Notification 通知提醒框 内容换行

直接上代码 const msg errArr.map((message, index) > ${index 1}. ${message};) notification.open({message: ${statu.moduleName} 告警信息,description: () > {// 将msg所有;替换为\n换行符const res msg.replaceAll(;, \n)return h(pre,{style: {overflow: scro…

Transformer简单理解

目录 一、CNN存在的问题&#xff1a;二.Transformer整理架构分析&#xff1a;1.Linear Projection of Flattened Patches层形成Patch&#xff1a;2.对每个Patch进行位置编码Position Embedding&#xff1a;3.Transformer Encoder: 三.公式解读&#xff1a; 一、CNN存在的问题&a…

为什么使用 atan2(sin(z), cos(z)) 进行角度归一化?

文章目录 为什么使用 atan2(sin(z), cos(z)) 进行归一化&#xff1f;为什么归一化后的角度等于原始角度&#xff1f; atan2 方法返回 -π 到 π 之间的值&#xff0c;代表点 (x, y) 相对于正X轴的偏移角度。这个角度是逆时针测量的&#xff0c;以弧度为单位。关于 atan2 函数为…

【JAVA WEB】 Filter过滤器详解

目录 1&#xff0c;Filter 1.1 Filter概述 1.2 Filter快速入门 1.2.1 开发步骤 1.2.2 代码演示 1.3 Filter执行流程 1.4 Filter拦截路径配置 1.5 过滤器链 1.5.1 概述 1.5.2 代码演示 1.5.3 问题 1.6 案例 1.6.1 需求 1.6.2 分析 1.6.3 代码实现 1.6.3.1 创建Fi…

ERP系统怎么选 企业ERP管理系统选型建议

市面上有众多的ERP系统&#xff0c;而由于不同软件供应商的发展策略不同&#xff0c;导致不同ERP系统的侧重点也不同。例如有针对企业某一类管理需求的ERP系统&#xff0c;例如财务管理软件&#xff0c;进销存管理软件&#xff0c;仓库管理软件等。还有针对企业资源整合&#x…

element-ui表单验证同时用change与blur一起验证

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 当审批时不通过审批意见要必须输入&#xff0c; 1&#xff1a;如果用change验证的话删除所有内容时报错是massage的提示&#xff0c;但是在失去焦点的时候报错就成了英文&#xff0c;如下图&#xf…

【iOS】数据存储方式总结(持久化)沙盒结构

在iOS开发中&#xff0c;我们经常性地需要存储一些状态和数据&#xff0c;比如用户对于App的相关设置、需要在本地缓存的数据等等&#xff0c;本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式&#xff08;数据持久化&#xff09; 根据要存储的数据大小、存储数据以及…

计算机毕业设计 | SpringBoot宠物店管理系统(附源码)

1&#xff0c;绪论 项目背景 我国已经成为世界第二大经济体&#xff0c;经济实力高速发展以及百姓生活水平的普遍提高&#xff0c;不断地要求企业提供更加多元化的娱乐方式&#xff0c;更加快速和方便的服务&#xff0c;因此对宠物行业也提出了更加严格的要求&#xff0c;如管…

【NI国产替代】NI‑9232,3通道,102.4 kS/s/ch,±30 V,C系列声音与振动输入模块

3通道&#xff0c;102.4 kS/s/ch&#xff0c;30 V&#xff0c;C系列声音与振动输入模块 NI‑9232可以测量来自集成电子压电(IEPE)和非IEPE传感器的信号&#xff0c;例如加速度计、转速计和接近式探针。 NI‑9232还可兼容智能TEDS传感器。\n\nNI‑9232集成了软件可选的AC/DC耦合…

Window——安装nacos

1、Git拉取项目 官方地址&#xff1a;https://nacos.io/zh-cn/ git clone https://github.com/alibaba/nacos.git2、进入项目执行命令安装&#xff08;需要maven&#xff09; Maven下载指引&#xff1a;https://blog.csdn.net/qq812457115/article/details/117451334 mvn -Prel…

JRT核心竞争力

如果说JRT业务脚本化和发部署简单和打印导出客户端都不足以抵挡Spring用的人多的优势的话。那么这一篇让DolerGet给你一个选择JRT的理由&#xff0c;借助JRT自我实现的ORM&#xff0c;JRT有能力完全把控更新数据和删除数据的口径&#xff0c;和能够准确知道哪些是热点数据&…

UDP传输总丢包?常用的解决方式在这里!

UDP是一种无连接的协议&#xff0c;传输数据时不建立连接&#xff0c;因此可能导致数据包丢失。UDP丢包是指在传输过程中由于各种原因导致数据包未能到达目的地。UDP丢包会影响传输的质量和效率&#xff0c;导致数据损失、延迟&#xff0c;甚至导致传输失败。本文将分析UDP丢包…

guns项目 Failed to register @ServerEndpoint class 问题

问题发生所在 socket-business-websocket-7.2.4.jar tomcat发布测试的时候报Failed to register ServerEndpoint class &#xff0c;查询jar报主要是WebSocketServer 类加载有问题&#xff0c;把jar报中该类注掉&#xff0c;重新实现这个类&#xff0c;删除Component注解问题&…

Linux信号之信号的保存

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、阻塞信号 1.信号递达、未决、阻塞 2.内核…

yolov1:背景介绍与算法精讲

目录 一、背景介绍1.1 yolo发展历史1.2 作者介绍 二、算法精讲2.1 预测阶段2.2 训练阶段 三、论文细节 一、背景介绍 其实在写这篇博客的时候yolov1~yolov8的所有网络结构以及算法思想和源码都已经研究很久了&#xff0c;回过头继续读v1会发现有很多细节是自己没有留意的&#…