首页 > 其他分享 >【UniApp】-uni-app-数据传递补充

【UniApp】-uni-app-数据传递补充

时间:2023-12-17 15:15:02浏览次数:36  
标签:UniApp index app 传递数据 uni emit 页面

前言

  • 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-CompositionAPI传递数据
  • 那么了解完了uni-app-CompositionAPI传递数据之后,这篇文章来给大家介绍一下 uni-app-数据传递补充(也就是在补充一点内容给到大家)
  • 先主要介绍逆向传递数据,逆向传递数据除了使用事件通道之外,还可以通过 uni.$emit 的方式来进行传递数据,这种方式也是非常的简单
  • 先来简单的搭建一个演示环境,然后来进行介绍
  • 分别从 Vue2 与 Vue3 进行介绍

搭建演示环境

创建一个全新的项目(先来看 Vue2 版本的,所以在创建项目的时候选择 Vue2):

然后在配置一下,微信小程序的 AppId,直接去之前的项目中拷贝一下即可,找到之前项目的 manifest.json 文件,然后选择微信小程序配置,复制一下即可。

  • 经过如上的这么一顿操作之后,就可以搭建完毕运行环境,与编码环境
  • 接下来就可以开始进行介绍 uni-app-数据传递补充内容了

步入正题

emit(Vue2)

  • 项目创建好了,我们现在需要分别创建对应的页面,分别是 one 与 index 页面
  • 在 one 页面中创建一个按钮,点击按钮之后跳转到 index 页面,然后在 index 页面中创建一个按钮,点击按钮之后跳转到 one 页面
  • 在 one 返回按钮的函数中,通过 uni.$emit 的方式来传递数据,然后在 index 页面中通过 uni.$on 来接收数据
  • 在 index 页面中除了通过 uni.$on 来接收数据之外,还需要在 onUnload 生命周期函数中通过 uni.$off 来取消监听
  • 反正你要记住监听了方法那么就一定要取消监听,不然会造成内存泄漏的问题

one 页面:

<template>
	<view>
		<text>one页面</text>
		<button type="primary" @click="onGoBackClick">返回到上一页</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {}
		},
		methods: {
			onGoBackClick() {
				uni.navigateBack({
					delta: 1
				});

				// 通过 $emit 传递数据
				uni.$emit("test", {
					data: "通过$emit直接传递数据"
				})
			}
		}
	}
</script>

index 页面:

<template>
	<view>
		<button @click="onJumpOne">navigateTo</button>
	</view>
</template>

<script>
	export default {
		methods: {
			onJumpOne() {
				uni.navigateTo({
					url: '/pages/one/one'
				})
			}
		},
		onLoad() {
			uni.$on("test", (data) => {
				console.log(data)
			})
		},
		onUnload() {
			uni.$off("test")
		}
	}
</script>
  • 经过如上的这么一番操作之后,我们就可以在控制台中看到我们传递的数据了

emit(Vue3)

  • 在 Vue3 中,其实写法大差不差的,只不过在 setup 函数中进行编写
  • 废话不多说,直接上代码

one 页面:

<template>
	<view>
		<text>one</text>
		<text>=======================</text>
		<button type="default" @click="onGoBackClick">返回上一个界面</button>
	</view>
</template>

<script setup>
	function onGoBackClick() {
		uni.navigateBack({
			delta: 1
		});

		// 通过 $emit 传递数据
		uni.$emit("test", {
			data: "通过$emit直接传递数据"
		})
	}
</script>

index 页面:

<template>
	<view>
		<button type="primary" @click="onJumpOne">跳转到One界面</button>
	</view>
</template>

<script setup>
	import {
		onLoad,
		onUnload
	} from '@dcloudio/uni-app'

	function onJumpOne() {
		uni.navigateTo({
			url: '/pages/one/one'
		})
	}

	onLoad(() => {
		uni.$on("test", (data) => {
			console.log(data)
		})
	})

	onUnload(() => {
		uni.$off("test")
	})
</script>

总结

顺着传递数据

  • 通过URL传递数据,然后通过 onl oad 生命周期函数中的 options 参数来接收数据
  • 通过 eventChannel.emit 事件通道传递数据,然后通过 eventChannel.on 来接收数据

逆向传递数据

  • 通过 uni.$emit 传递数据,然后通过 uni.$on 来接收数据(有一个注意点,就是 uni.$on 注册的事件一定要在页面卸载的时候通过 uni.$off 注销掉)
  • 通过 eventChannel.emit 事件通道传递数据,然后通过 events 参数来接收数据

End

  • 如果你有任何问题或建议,欢迎在下方留言,我会尽快回复
  • 如果你觉得本文对你有帮助,欢迎点赞、收藏,你的支持是我写作的最大动力

标签:UniApp,index,app,传递数据,uni,emit,页面
From: https://www.cnblogs.com/BNTang/p/17909089.html

相关文章

  • Java医院3D人体智能导诊系统源码 Uniapp+springboot
    “智能导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号等需求。智能导诊可根据描述的部位和病症,给出适合病症的科室参考。智慧导诊页面会显示男性或女性的身体结构图,可切换正面/背面。通过点击部位选项,选择自己身体不......
  • 01.App 自动化测试的价值与体系
    UI自动化价值提高效率融入企业迭代流水线,与CI/CD/DevOps结合回归测试、功能测试加速提高质量:兼容性测试专项/非功能测试自动化探索测试app测试的时代背景按月发布->按周发布->按小时发布多端发布:Android、iOS、微信小程序、h5多环境发布:联调环境、测试环......
  • Qt 5.9.6+VS2019 community 环境配置
    介绍GCCminGW安装Qt5.9.6安装VS2019community略配置VS2019community在VS的管理拓展里面下载Qtvisualstudiotools如果下得很慢就手动下载vsaddin......
  • uniapp生成带有产品和二维码信息的海报
    需求:后端返回产品图片和个人信息,前端根据产品链接生成二维码,然后将产品图片、用户信息、二维码生成海报,并点击下载。这里使用了qrcodejs2、html2canvas、file-saver插件,使用前分别进行安装。点击海报列表在弹层中显示对应的海报产品,并且生成组合的图片供用户下载。<u-......
  • C - Repunit Trio
    C-RepunitTriohttps://atcoder.jp/contests/abc333/tasks/abc333_c 思路N=333时候,repunit最长12位,三重遍历repunit做和记录到vector中最后对vector进行排序,取n值。 Codehttps://atcoder.jp/contests/abc333/submissions/48575689vector<longlong>sums;int......
  • 20.app压力测试
    App压力测试Monkey是Google提供的一个用于稳定性与压力测试的命令行工具可以运行在模拟器或者实际设备中它向系统发送伪随机的用户事件对软件进行稳定性与压力测试为什么要用MonkeyMonkey就是像猴子一样上蹿下跳地乱点为了测试软件的稳定性,健壮性随机点击比顺序点......
  • 第四章:mapper映射文件存放位置、springboot支持事务
    一、mapper映射文件存放位置二、springboot支持事务......
  • uniapp的editor组件在H5上无法点击的问题处理
    uniapp开发的移动端H5和小程序,富文本框输入框使用了editor的组件在小程序端是运行正常的,但是在H5端出现了无法点击的情况,是好时坏原因是H5端依赖远端的quill.min.js组件,该远端的组件偶尔会出现访问的情况文档上写的比较清楚,但是具体怎么写没有写的写的很具体  经常尝试,搞定......
  • 【UniApp】-uni-app-传递数据
    前言好,经过上个章节的介绍完毕之后,了解了一下uni-app-路由那么了解完了uni-app-路由之后,这篇文章来给大家介绍一下uni-app-路由传递数据路由传参怎么传,是不是可以从A页面传递给B页面,然后B页面再传递给C页面,也可以从C页面传递给B页面,然后B页面再传递给A......
  • unigui显示uniTreeVview使用TUniTreeNode内存泄漏的问题【14】
    uniTreeVviewc创建一个tree,显示患者姓名(PatientName)。因为需要用到患者ID(PatientID),所以使用help:TPatientTreeNode=class(TUniTreeNode)//strictprivateFPatientID:string;functionGetPatientID:string;procedureSetPatientID(constValue:string)......