uniApp 学习笔记总结(二)

1. 如何发送get请求


官方文档

发起请求方式也都差不多:

  • 有一个坑,就是success等等函数最好都要用箭头函数,不然拿不到this指定的data数据!
<template>
	<view>
		<view>这是列表页</view>
		<view class="box-item">
			{{list}}
		</view>
		<button @click="allEmp">查询全部</button>
	</view>
</template>

<script>
	export default{
		data(){
			return {
				list:"123123"
			}
		},
		methods:{
			allEmp(){
				//调用request完成请求,也可以设置方法。
				uni.request({
					url:'https://api.uixsj.cn/hitokoto/get?type=social',
					success:(res)=>{
							this.list = res.data;
					}
				})
			}
		}
	}
</script>

<style>
	.box-item{
		height: 100px;
		line-height: 100px;
	}
</style>

也可以中断请求任务:

// 中断请求任务
requestTask.abort();

2. 数据缓存


https://uniapp.dcloud.io/api/storage/storage.html#setstorage

同样的storage方式:

<template>
	<view>
		<button @click="setStorage">存储本地</button>
		<button @click="getStorage">获取本地</button>
		<button @click="removeStorage">移除本地</button>
	</view>
</template>

<script>
	export default{
		data(){
			return {
				list:"123123"
			}
		},
		methods:{
			setStorage(){
				uni.setStorage({
					key:'1',
					data:this.list,
					success() {
						console.log("存储成功")
					}
				})
			},
			getStorage(){
				uni.getStorage({
					key:'1',
					success:(res)=>{
						console.log(res.data)
					}
				})
			},
			removeStorage(){
				uni.removeStorage({
					key:'1',
					success() {
						console.log('移除成功')
					}
				})
			}
		}
	}
</script>

<style>
	.box-item{
		height: 100px;
		line-height: 100px;
	}
</style>

3. 图片上传 + 预览

3.1 图片上传


uni.chooseImage函数方法:

  • 本地相册选择图片使用相机拍照。
<template>
	<view>
		<button type="primary" @click="chooseImg">上传图片</button>
		<image v-for="item in arrImg" :src="item"></image>
	</view>
</template>

<script>
	export default {
		data(){
			return {
				arrImg:[]
			}
		},
		methods:{
			chooseImg(){
				console.log('上传图片')
				uni.chooseImage({
					count:5,//限制上传图片数量,官方给出在H5上面是没法限制数量的
					
					//这里有个坑,就是必须是箭头函数,不然这个this没法指向Vue对象。
					success:(res)=>{
						//将上传的对象给arrImg
						this.arrImg = res.tempFilePaths
						console.log(res)
					}
				})
			}
		}
	}
</script>

<style>
</style>

3.2 图片预览


uni.previewImage函数方法:

图片预览就是我点击图片时,将该图片预览出来。

注意:current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。App平台在 1.9.5至1.9.8之间,current为必填。不填会报错

<template>
	<view>
		<button type="primary" @click="chooseImg">上传图片</button>
		<image v-for="item in arrImg" :src="item" @click="previewImg(item)"></image>
	</view>
</template>

<script>
	export default {
		data(){
			return {
				arrImg:[]
			}
		},
		methods:{
			chooseImg(){
				console.log('上传图片')
				uni.chooseImage({
					count:5,//限制上传图片数量,官方给出在H5上面是没法限制数量的
					
					//这里有个坑,就是必须是箭头函数,不然这个this没法指向Vue对象。
					success:(res)=>{
						//将上传的对象给arrImg
						this.arrImg = res.tempFilePaths
						console.log(res)
					}
				})
			},
			//图片预览方法
			previewImg(current){
				console.log('预览图片')
				uni.previewImage({
					current:current,//当前图片链接或者索引
					urls: this.arrImg,//当前图片集数组
					indicator: "default", //图片指示器样式
					loop: true//循环预览urls里面的图片
				})
			}
		}
	}
</script>

<style>
</style>

如果上传云端还需操作一些代码,见官方:
https://uniapp.dcloud.io/uniCloud/storage.html#%E5%AE%A2%E6%88%B7%E7%AB%AFapi

4. 条件注释实现跨段兼容


条件编译使用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

格式:

  • #ifdef 或 #ifndef加 %PLATFORM% 开头,以 #endif 结尾
    在这里插入图片描述

案例如下:

<template>
	<view>
		<!-- #ifdef H5 -->
		<view>你好世界1111</view>
		<!-- #endif -->
		<!-- #ifdef MP-WEIXIN -->
		<view>你好世界2222</view>
		<!-- #endif -->
		<button @click="myFun">点击按钮显示不同信息</button>
	</view>
</template>

<script>
	export default {
		data(){
			return {
			}
		},
		methods:{
			myFun(){
				// #ifdef H5
				console.log('显示在H5平台')
				// #endif
				// #ifdef MP-WEIXIN
				console.log('显示在微信平台')
				// #endif
			}
		}
	}
</script>

<style>
	/* #ifdef H5 */
	view{
		color: ;color: #007AFF;
	}
	/* #endif */
	
	/* #ifdef MP-WEIXIN */
	view{
		color: #4CD964;
	}
	/* #endif */
</style>

5. 导航跳转 + 传参

5.1 利用navigator组件进行跳转 (组价式跳转)


navigator组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。

<template>
	<view>
		navigator组件 导航跳转的学习
		<!-- 跳转普通页 -->
		<navigator url="/pages/list/list">跳转至信息页</navigator>
		<!-- 跳转tabbar页面,需要添加open-type="switchTab" -->
		<navigator url="/pages/index/index" open-type="switchTab">跳转至主页</navigator>
		<!-- redirect跳转后,会关闭之前页面。也就是没有了" < " 回退了。   -->
		<navigator url="/pages/list/list" open-type="redirect">跳转至信息页</navigator>
	</view>
</template>

<script>
</script>

<style>
</style>

5.2 API页面跳转 (编程式导航)


uni.navigateTo函数方法:

  • 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。

uni.switchTab函数方法:

  • 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

uni.redirectTo函数方法:

  • 关闭当前页面,跳转到应用内的某个页面。
  • 跟redirect就算是一种重定向的标识了。

同样如果跳转页面传递参数了,可以使用onLoad(options)函数的options来接收到:
在这里插入图片描述

6. uni-app组件创建引入 + 组件生命周期


这个组件的创建引入和生命周期就和vue一样了。

  • .vue文件创建 + import引入,生命周期如下:
    在这里插入图片描述

7. 组件之间的通讯方式


同Vue一样:

父传子:

  • 通过props: ['xxx']来传递。

子传父:

  • $emit触发事件。
    在这里插入图片描述

uni.$emit(eventName,OBJECT)函数方法:

  • 触发全局的自定义事件,附加参数都会传给监听器回调函数。

uni.$on(eventName,callback)函数方法:

  • 监听全局的自定义事件,事件由 uni.$emit 触发,回调函数会接收事件触发函数的传入参数。

uni.$once(eventName,callback)函数方法:

  • 监听全局的自定义事件,事件由 uni.$emit 触发,但仅触发一次,在第一次触发之后移除该监听器。

uni.$off([eventName, callback])函数方法:

  • 移除全局自定义事件监听器。

8. uni-ui组件库


uni-uiDCloud提供的一个跨段ui库,它是基于Vue组件的,flex布局的,无dom的跨全端ui框架。

uni-ui不包括基础组件,它是基础组件的补充。


https://uniapp.dcloud.io/component/uniui/uni-calendar.html#%E4%BB%8B%E7%BB%8D

就拿日历来导入演示:
在这里插入图片描述
之后就会再HbuilderX上面安装插件去了。
在这里插入图片描述

按照官方下面的指示一步步的执行就行:

<template>
	<view>
		<view>
		    <uni-calendar 
		        ref="calendar"
		        :insert="false"
		        @confirm="confirm" 
		         />
		</view>
		<button @click="open">打开日历</button>
	</view>
</template>

<script>
	export default {
		data(){
			return {
				title:"你好世界"
			}
		},
		methods:{
			open(){
				//点击按钮后会触发组件对应的方法。
				this.$refs.calendar.open();
			},
			confirm(e) {
				//简历确定后,会走confirm这里的代码!
				console.log(e);
			}
		}
	}
</script>

<style>
</style>

9. 对于请求可能统一封装js文件来处理


在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
涉及内容:注意,学习此视频必须有一定基础的同学区块链相关知识、钱包相关知识、p2p相关知识、uniapp相关知识    01前言    02成果展示    03前言区块链概念和六层模型介绍    04翻译一个带币的js简单例子原理介绍    05区块链springboot工程搭建和区块相关实现    06区块链中加密算法相关介绍以及实现    07钱包相关实体类介绍    08redis数据库等配置和工具类的介绍    09区块链相关实体类介绍    10挖矿相关实体类和POW相关的介绍    11 p2p 点对点 server和client代码    12 p2p 原理的简单介绍    13 节点钱包相关启动实现    14 web控制层逻辑基础代码    15 web功能的整体介绍    16 web钱包功能-创建钱包账户的完整功能实现    17 web钱包功能-获取挖矿钱包信息和根据钱包地址获取信息    18 web钱包功能-获取当前节点所有钱包    19 全节点钱包轻钱包中心化钱包的概念    20 p2p三个节点的相关配置并启动    21 p2p 节点添加相关流程    22 p2p 节点列表相关实现    23 区块相关挖矿与挖矿奖励等讲解    24 区块链相关的查询操作    25 交易转账相关逻辑    26 三台机器节点运行 uniapp开发前准备    27 uniapp首页和我的页面实现    28 uniapp 节点钱包和节点钱包列表展示    29 uniapp添加节点,节点列表挖矿区块链查询等    30 uniapp我的钱包转账查询交易等    31 课程总结以及代码资料等相关说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xupengboo

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值