前言

  • 好,经过上个章节的介绍完毕之后,了解了一下 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传递数据的更多相关文章

  1. 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用

    [源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...

  2. 利用URL Scheme打开APP并传递数据

    https://blog.csdn.net/u013517637/article/details/55251421 利用外部链接打开APP并传递一些附带信息是现在很多APP都有的功能,我在这把这部分的 ...

  3. 多个App间传递数据

    平台:Android两个App:A,B:需求:在A中点击一个按钮后,启动B并把数据从A传递到B: 代码: App A: MainActivity.java中添加: Button btn2 = (But ...

  4. 小程序App.js 传递数据给实例(app异步数据问题)

    在最开始初始化的时候,都会触发app.js 这个里面的onload生命方法, 在这个方法里面我们可以获取之前的存储数据/异步请求等等操作, 但是这些操作一般都是需要稍许时间.也就是说在其他界面加载结束 ...

  5. vue组件 Prop传递数据

    组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. prop 是单向绑定的:当父组件的属性变化时, ...

  6. 客户端相关知识学习(十)之app给h5传递数据

    方法一: app可以把参数传到h5的链接里,用类似?xx=xx&xx=xx的形式拼接,js解析参数即可. 方法二: 情况一:app调用h5 原生app都可以对js的function进行触发,前 ...

  7. 客户端相关知识学习(九)之h5给app传递数据

    方法一: 情况一: if (window.JdAndroid){          window.JdAndroid.setPayCompleted();          window.JdAndr ...

  8. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...

  9. activity与fragment之间传递数据

    总结:无论是activity给fragment传递数据,还是fragment给activity传递数据,都把activity和fragment都当做一个普通的对象,调用它的方法,传递参数. 1.Fra ...

  10. vuejs动态组件给子组件传递数据

    vuejs动态组件给子组件传递数据 通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component> ...

随机推荐

  1. Android13深入了解 Android 小窗口模式和窗口类型

    Android13深入了解 Android 小窗口模式和窗口类型 小窗模式,作为一种在移动设备上的多任务处理方式,为用户带来了便捷和高效的体验,尤其在一些特定场景下,其价值愈发凸显.以下是为什么需要小 ...

  2. Lazada详情接口的应用

    Lazada是东南亚电商领域的一家知名企业,Lazada商品详情接口是Lazada提供的一种获取Lazada平台商品详细信息的接口.本文将介绍Lazada商品详情接口的使用方法和相关注意事项. 第一步 ...

  3. 全是中文的txt文件查找特定字符并输出该行到新文件

    tangshi.txt文件为全为汉唐诗 在该文件中查找指定字符 codecs库为打开中文文件的库,详情自行知乎 tangshi.txt大概十几万行,需要该文件练手的同学下方评论 要点:更改文件字符编码 ...

  4. [Python] 今天开始学习Python3了, 纪念一下

    #! /usr/bin/env python3 import time print("你好, 请告诉我你的名字.") name = input("名前: ") ...

  5. Salesforce LWC学习(四十五) lwc支持Console App控制Tab了

    本篇参考:https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_workspaceAPI.htm&release= ...

  6. 5-MySQL列定义

    1.列定义 说明:在MySQL中,列定义(Column Definition)是用于定义数据库表中每一列的结构的语句.它指定了列的名称.数据类型.长度.约束以及其他属性. 2.主键和自增 主键:PRI ...

  7. 五分钟k8s入门到实战-应用配置

    背景 在前面三节中已经讲到如何将我们的应用部署到 k8s 集群并提供对外访问的能力,x现在可以满足基本的应用开发需求了. 现在我们需要更进一步,使用 k8s 提供的一些其他对象来标准化我的应用开发. ...

  8. 分布式事务 —— SpringCloud Alibaba Seata

    Seata 简介 传统的单体应用中,业务操作使用同一条连接操作不同的数据表,一旦出现异常就可以整体回滚.随着公司的快速发展.业务需求的变化,单体应用被拆分成微服务应用,原来的单体应用被拆分成多个独立的 ...

  9. hadoop集群搭建及编程实践

    Hadoop集群搭建 前期准备及JDK,hadoop安装 设置主机名和添加主机映射 验证连通性 SSH无密码登录 配置集群/分布式环境 修改workers 修改文件core-site.xml 修改hd ...

  10. android studio error

    Invalid method receiver.: Invalid method receiver.java.lang.IllegalStateException: Invalid method re ...