【UniApp】-uni-app-CompositionAPI传递数据

前言
- 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-传递数据
- 那么了解完了uni-app-传递数据之后,这篇文章来给大家介绍一下 uni-app-CompositionAPI传递数据
- 首先不管三七二十一,先来新建一个项目
搭建演示环境
创建一个全新的项目:

然后在配置一下,微信小程序的 AppId,直接去之前的项目中拷贝一下即可,找到之前项目的 manifest.json 文件,然后选择微信小程序配置,复制一下即可。
- 经过如上的这么一顿操作之后,就可以搭建完毕运行环境,与编码环境
- 接下来就可以开始进行介绍 uni-app-CompositionAPI传递数据内容了
步入正题
通过路径拼接传递数据
创建一个 one 页面,我们在首页当中编写一个按钮,点击按钮跳转到 one 页面,然后在 one 页面当中显示传递过来的数据,我这里是通过 CompositionAPI 来进行传递数据的,代码如下:
<template>
<view>
<button type="primary" @click="onJumpOne">跳转到One界面</button>
</view>
</template>
<script setup>
function onJumpOne() {
uni.navigateTo({
url: '/pages/one/one?name=BNTang&age=18'
})
}
</script>
然后在 one 页面当中接收数据,代码如下:
<template>
<view>
<text>One</text>
</view>
</template>
<script setup>
import {
onLoad
} from '@dcloudio/uni-app'
onLoad((option) => {
console.log(option)
})
</script>
然后我们点击按钮,跳转到 one 页面,可以看到控制台打印出了我们传递过来的数据:

除了通过 option 来接收数据之外,我们还可以通过 props 来接收数据,代码如下:
<script setup>
const props = defineProps({
name: String,
age: Number
})
console.log(props.name, props.age);
</script>
好了,这是正向传递数据,那么反向传递数据呢?
反向传递数据
我们在 one 页面当中编写一个按钮,点击按钮跳转到首页页面,然后在首页页面当中显示传递过来的数据,代码如下:
<template>
<view>
<text>One</text>
<button type="primary" @click="goBackClick">返回首页</button>
</view>
</template>
<script setup>
function goBackClick() {
uni.navigateBack({
delta: 1
});
}
</script>
页面已经搭建好了,那么我们就可以开始传递数据了,在之前我们是通过 this.getOpenerEventChannel(); 来进行传递数据的,但是在 CompositionAPI 当中没有 this,那么我们现在要做的第一件事情就是获取 this,在 compositionAPI 当中获取 this 可以通过 getCurrentInstance() 来获取,代码如下:
<script setup>
import {
ref,
getCurrentInstance
} from 'vue'
// 获取 this
const $instance = ref(getCurrentInstance().proxy)
... other
</script>
竟然获取到了 this,那么接下来的代码就和之前的一样了,代码如下:
<script setup>
import {
ref,
getCurrentInstance
} from 'vue'
// 获取 this
const $instance = ref(getCurrentInstance().proxy)
function goBackClick() {
uni.navigateBack({
delta: 1
});
const eventChannel = $instance.value.getOpenerEventChannel();
eventChannel.emit("acceptDataFromOpenerPage", {
data: '通过事件通道返回时传递数据'
})
}
</script>
如上代码就是我们之前的逆着传递数据的代码,改动的点就是之前是 this.getOpenerEventChannel(); 现在是 $instance.value.getOpenerEventChannel();,然后我们在首页当中接收数据,代码如下:
<script setup>
function onJumpOne() {
uni.navigateTo({
url: '/pages/one/one?name=BNTang&age=18',
events: {
acceptDataFromOpenerPage(data) {
console.log(data)
}
}
})
}
</script>
运行一下,点击按钮跳转到 one 页面,然后点击返回按钮,可以看到控制台打印出了我们传递过来的数据:

正向传递数据
那么逆向传递看完了,正向传递就来快速过一下,首先更改首页的代码,代码如下:
<script setup>
function onJumpOne() {
uni.navigateTo({
url: '/pages/one/one',
success(res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', {
data: '通过事件通道传递的数据'
})
}
})
}
</script>
然后在 one 页面当中接收数据,代码如下:
<script setup>
import {
ref,
getCurrentInstance
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
// 获取 this
const $instance = ref(getCurrentInstance().proxy)
onLoad((option) => {
const eventChannel = $instance.value.getOpenerEventChannel();
eventChannel.on('acceptDataFromOpenerPage', function(data) {
console.log(data)
})
})
</script>
运行一下,点击按钮跳转到 one 页面,可以看到控制台打印出了我们传递过来的数据:

最后
大家好我是 BNTang, 一个热爱分享的技术的开发者,如果大家觉得我的文章对你有帮助的话,可以关注我的公众号 JavaBoyL,我会在公众号中分享一些IT技术和一些个人的见解,谢谢大家的支持。

【UniApp】-uni-app-CompositionAPI传递数据的更多相关文章
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
[源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...
- 利用URL Scheme打开APP并传递数据
https://blog.csdn.net/u013517637/article/details/55251421 利用外部链接打开APP并传递一些附带信息是现在很多APP都有的功能,我在这把这部分的 ...
- 多个App间传递数据
平台:Android两个App:A,B:需求:在A中点击一个按钮后,启动B并把数据从A传递到B: 代码: App A: MainActivity.java中添加: Button btn2 = (But ...
- 小程序App.js 传递数据给实例(app异步数据问题)
在最开始初始化的时候,都会触发app.js 这个里面的onload生命方法, 在这个方法里面我们可以获取之前的存储数据/异步请求等等操作, 但是这些操作一般都是需要稍许时间.也就是说在其他界面加载结束 ...
- vue组件 Prop传递数据
组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. prop 是单向绑定的:当父组件的属性变化时, ...
- 客户端相关知识学习(十)之app给h5传递数据
方法一: app可以把参数传到h5的链接里,用类似?xx=xx&xx=xx的形式拼接,js解析参数即可. 方法二: 情况一:app调用h5 原生app都可以对js的function进行触发,前 ...
- 客户端相关知识学习(九)之h5给app传递数据
方法一: 情况一: if (window.JdAndroid){ window.JdAndroid.setPayCompleted(); window.JdAndr ...
- UWP开发:APP之间的数据交互(以微信为例)
目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...
- activity与fragment之间传递数据
总结:无论是activity给fragment传递数据,还是fragment给activity传递数据,都把activity和fragment都当做一个普通的对象,调用它的方法,传递参数. 1.Fra ...
- vuejs动态组件给子组件传递数据
vuejs动态组件给子组件传递数据 通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component> ...
随机推荐
- 《小白WEB安全入门》02. 开发篇
@ 目录 初识HTML潜在漏洞 初识CSS潜在漏洞 初识JS潜在漏洞 初识后端潜在漏洞 后端能做什么 后端种类 后端框架 潜在漏洞 本系列文章只叙述一些超级基础理论知识,极少有实践部分 本文涉及到的语 ...
- 了解 HarmonyOS
引言 在开始 HarmonyOS 开发之前,了解其背景.特点和架构是非常重要的.本章将为你提供一个全面的 HarmonyOS 概览. 目录 什么是 HarmonyOS HarmonyOS 的发展历程 ...
- H.265+SRS6.0服务器部署
H.265+SRS6.0服务器部署 SRS从6.0开始,全面支持H.265,包括RTMP.FLV.HLS.GB28181.WebRTC等等.具体的服务器部署及H.265推流步骤如下. 1. SRS 要 ...
- QA|ValueError: write to closed file报错怎么debug|IHRM接口自动化测试
unittest生成自动化测试报告时报错ValueError: write to closed file,如下图 代码如下: 原因排查:因为with open打开文件后会自动关闭,也就是上图16行执行 ...
- redhat7 team bonding 双网卡绑定 主备 负载均衡
team简介 team也被称为网络组,是将多个网卡聚合在一起,从而实现冗错和提高吞吐量.适用于redhat7.0以上版本,至多可支持8块网卡.team相对于之前的bonding技术,能提供更好的性能和 ...
- KRPANO最新完整汉化中文版 (KRPANO-1.19-PR10-WIN汉化版)
KRPano 最新版本汉化krpano-1.19-pr10-win,由KRPano技术解密群:551278936 提供. 下载地址:http://pan.baidu.com/s/1bBmD5c 如果需 ...
- 集群部署专题之一:详解集群间SSH无密码登录配置步骤
一.SSH简介 SSH(Secure Shell)是一种网络安全协议,通过加密和认证机制实现安全访问和文件传输等业务.传统远程登录和文件传输方式有Telnet或FTP,这两种方式都使用明文传输数据,存 ...
- gitbook生成静态页面不跳转
gitbook页面不跳转 现在可以在localhost:4000/查看自己的网页了.而且生成的网页存在_book文件夹中,下次点击 _book文件夹中的index.html就能打开网页,内容无更新,就 ...
- FreeSWITCH添加h264编码及pcap视频提取
操作系统 :CentOS 7.6_x64.Windows 10_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.2 一.启用h264相关模块 这里以 mod_openh26 ...
- Arduino基础入门之三按键开关
目的:通过读取按键开关的信号,实现其他器件的控制 难点:下拉电阻和上拉电阻 一.关于按键开关 按键开关如上图[1]所示,但我拿到实物,最令我头疼的是按钮下边4个角,我不知那两边是相通的(就是和图中12 ...