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

【鸿蒙 HarmonyOS NEXT】使用EventHub进行数据通信

✨本人自己开发的开源项目:土拨鼠充电系统

✨踩坑不易,还希望各位大佬支持一下,在GitHub给我点个 Start ⭐⭐👍👍

GitHub开源项目地址👉:https://github.com/cheinlu/groundhog-charging-system

一、背景

EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。

在项目开发中,可以通过EventHub来进行页面之间的数据通信

二、EventHub的几种方法

1、emit(event: string, ...args: Object[]): void;👉👉触发指定事件。

2、on(event: string, callback: Function): void;👉👉订阅指定事件。

3、off(event: string, callback?: Function): void;👉👉取消订阅指定事件。当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback。

三、具体实现

需求:在EventHub1页面,点击按钮将数据message,传递给EventHub2页面

3.1、EventHub1组件通过eventHub.emit()订阅事件

@Component
export struct EventHub1 {@State message: string = 'harmony'build() {Column() {Text('EventHub1')Button('点击按钮向EventHub2发事件').onClick(() => {getContext().eventHub.emit('share', this.message) //订阅事件})}.height(100).width('100%').justifyContent(FlexAlign.Center).borderWidth(2).borderColor(Color.Red)}
}

 3.2、EventHub2组件通过eventHub.on()触发事件

@Component
export struct EventHub2 {@State shareMessage: string = ''aboutToAppear(): void {//触发事件getContext().eventHub.on('share', (message: string) => {this.shareMessage = message})}build() {Column() {Text('EventHub2')Text() {Span('接收EventHub1发送的内容:')Span(this.shareMessage).fontColor(Color.Orange).fontWeight(FontWeight.Bold)}}.height(100).width('100%').justifyContent(FlexAlign.Center).borderWidth(2).borderColor(Color.Green)}
}

3.3、实际效果

3.4、取消订阅事件

当离开页面时可以取消订阅事件,aboutToDisappear中使用eventHub.off()来进行取消,如下操作:

aboutToDisappear(): void {getContext().eventHub.off('share')}

http://www.lryc.cn/news/433905.html

相关文章:

  • 大模型RAG实战|构建知识库:文档和网页的加载、转换、索引与存储
  • 江协科技stm32————11-5 硬件SPI读写W25Q64
  • 网络编程day04(UDP、Linux IO 模型)
  • 【android10】【binder】【2.servicemanager启动——全源码分析】
  • Java实现简易计算器功能(idea)
  • Parsec问题解决方案
  • Swift 创建扩展(Extension)
  • 九月五日(k8s配置)
  • 某极验4.0 -消消乐验证
  • 洛谷 P10798 「CZOI-R1」消除威胁
  • Pow(x, n)
  • 一文带你学会使用滑动窗口
  • 如何从0到1本地搭建whisper语音识别模型
  • PyTorch 创建数据集
  • [Java]SpringBoot登录认证流程详解
  • 【Day08】
  • mongodb在Java中条件分组聚合查询并且分页(时间戳,按日期分组,年月日...)
  • 怎么样处理浮毛快捷又高效?霍尼韦尔、希喂、米家宠物空气净化器实测对比
  • 什么是WebGL技术?有什么特点?应用领域有哪些?
  • 500W逆变器(一)
  • ubuntu 22.04 编译安装新内核
  • Linux 文件权限与属性管理
  • Django学习实战篇三(适合略有基础的新手小白学习)(从0开发项目)
  • 【SPIE独立出版,连续2届稳定EI检索!】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024,10月25-27)
  • .NET/C#⾯试题汇总系列:基础语法
  • 【论文阅读】SwiftTheft: A Time-Efficient Model Extraction Attack Framework(2024)
  • springcloud间通信的方式
  • 【C++ Qt day9】
  • 中国传媒业人工智能应用发展图谱2024
  • RTX3060 FP64测试与猜想