当前位置: 首页 > news >正文

uni-app实现页面通信EventChannel

uni-app实现页面通信EventChannel

之前使用了EventBus的方法实现不同页面组件之间的一个通信,在uni-app中,我们也可以使用uni-app API —— uni.navigateTo来实现页面间的通信。注:2.8.9+ 支持页面间事件通信通道。

1. 向被打开页面传送数据

// index.vue
<script setup>uni.navigateTo({url: '/pages/tender/detail', // 跳转详情页面success:function(res){// 通过eventChannel向被打开页面传送数据res.eventChannel.emit('toDetailEmits', { data: 'index to detail' })}});
</script>
// detail.vue
import { onLoad } from '@dcloudio/uni-app';
import { ref, getCurrentInstance} from 'vue';
const instance = getCurrentInstance().proxy<script setup>onLoad(()=>{const eventChannel = instance.getOpenerEventChannel();eventChannel.on('toDetailEmits',(data)=>{console.log(data,'data') // 输出结果如下})})
</script>

在这里插入图片描述

2. 如果需要获取被打开页面传送到当前页面的数据

// index.vue
<script setup>uni.navigateTo({url: '/pages/tender/detail', // 跳转详情页面events:{// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据updataEmits:function(data){console.log(data,'data index')  // 输出结果如下// 可以在当前页做一些操作....}},success:function(res){// 通过eventChannel向被打开页面传送数据res.eventChannel.emit('toDetailEmits', { data: 'index to detail' })}});
</script>
// detail.vue
import { onLoad } from '@dcloudio/uni-app';
import { ref, getCurrentInstance} from 'vue';
const instance = getCurrentInstance().proxy<script setup>// 如点击某一按钮const cancle = () => {const eventChannel = instance.getOpenerEventChannel();eventChannel.emit('updataEmits',{data:'detail to index'})uni.navigateBack()}onLoad(()=>{const eventChannel = instance.getOpenerEventChannel();eventChannel.on('toDetailEmits',(data)=>{console.log(data,'data') })})
</script>

在这里插入图片描述

相关文章:

  • php反序列化学习(2)
  • 代码随想录算法训练营第三十四 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果
  • 前端开发:$nextTick()的使用及原理
  • Leetcode 105:从前序与中序遍历序列构造二叉树
  • 大数据中的电商数仓项目:探秘业务的核心
  • 【C++】——string模拟实现
  • GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求
  • Vim安装与配置教程(解决软件包Vim没有安装可候选)
  • Mac安装第三方软件的命令安装方式
  • Django Celery技术详解
  • 【手撕面试题】Vue(高频知识点一)
  • Java八股文:程序员的“面试经”还是技术壁垒?
  • Vue Node 编译报错:digital envelope routines::unsupported
  • 打家劫舍I 打家劫舍II (leetcode)
  • 使用cad绘制一个螺旋输送机
  • Android组件 - 收藏集 - 掘金
  • AWS实战 - 利用IAM对S3做访问控制
  • create-react-app做的留言板
  • IDEA 插件开发入门教程
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript服务器推送技术之 WebSocket
  • Making An Indicator With Pure CSS
  • python_bomb----数据类型总结
  • Python_网络编程
  • Quartz初级教程
  • TCP拥塞控制
  • Vultr 教程目录
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 爱情 北京女病人
  • 给Prometheus造假数据的方法
  • 聊聊directory traversal attack
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 字符串匹配基础上
  • mysql面试题分组并合并列
  • 阿里云ACE认证学习知识点梳理
  • ​iOS实时查看App运行日志
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #传输# #传输数据判断#
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (007)XHTML文档之标题——h1~h6
  • (11)MSP430F5529 定时器B
  • (bean配置类的注解开发)学习Spring的第十三天
  • (pycharm)安装python库函数Matplotlib步骤
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (第二周)效能测试
  • (三)终结任务
  • (十二)Flink Table API
  • (已解决)什么是vue导航守卫
  • (转)Sql Server 保留几位小数的两种做法
  • (转)视频码率,帧率和分辨率的联系与区别
  • (轉)JSON.stringify 语法实例讲解
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.