【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')
  }

鸿蒙EventHub华为鸿蒙OS的一个重要组成部分,用于处理和管理设备间的消息通信和事件传递。它的主要目标是提供一种高效可靠的机制,使得设备可以方便地相互协作和通信。 鸿蒙EventHub采用了发布-订阅的模型,设备可以作为消息发布者将事件发布到EventHub,同时其他设备可以作为订阅者订阅相关事件。EventHub负责将发布者和订阅者之间的消息进行中转和传输,确保消息的可靠性和时效性。 鸿蒙EventHub具有以下特点和优势: 1. 高效可靠:EventHub采用高效的消息传递机制,能够实时传输设备间的消息和事件。同时,EventHub还具备消息持久化和重发的功能,确保消息的可靠传递。 2. 灵活扩展:EventHub支持多种消息协议,包括MQTT、CoAP等,可以灵活适配不同类型的设备和网络环境。同时,EventHub还支持消息的过滤和路由功能,可以根据需求对消息进行筛选和转发。 3. 安全保障:EventHub提供了严格的安全机制,包括身份验证、消息加密和访问控制等,确保设备间的通信和数据传输的安全性。 4. 统一管理:鸿蒙EventHub可以集中管理多个设备之间的消息通信,可以实时监控消息的传输情况和设备的状态,为开发者提供便捷的管理和调试工具。 总之,鸿蒙EventHub是一款强大的设备间通信和事件传递的工具,它为鸿蒙OS提供了高效可靠的消息中转和传输机制,为设备间的协作和通信提供了良好的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值