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

news2024/12/30 5:54:47

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

✨踩坑不易,还希望各位大佬支持一下,在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.coloradmin.cn/o/2119712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【回收站选址】

题目 代码 #include <bits/stdc.h> using namespace std; const int R 2e91; typedef long long LL; unordered_set<LL> s; int piles[5]; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int dx1[4] {-1, -1, 1, 1}, dy1[4] {-1, 1, -1, 1};bool check(LL …

找不到ucrtbased.dll无法继续执行代码怎么办,总结5个方法

当计算机系统提示找不到ucrtbased.dll文件时&#xff0c;可能会引发一系列运行问题和故障现象。首先&#xff0c;我们需要了解ucrtbased.dll究竟是什么以及它在操作系统中扮演的角色。ucrtbased.dll是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它是Microsoft …

树莓派通过串口驱动HC-08蓝牙模块

树莓派通过串口驱动HC-08蓝牙模块 文章目录 树莓派通过串口驱动HC-08蓝牙模块一、HC-08蓝牙模块介绍二、树莓派与蓝牙模块硬件连接三、树莓派通过蓝牙控制设备 一、HC-08蓝牙模块介绍 蓝牙模块&#xff0c;是一种集成的蓝牙功能的PCB板&#xff0c;用于短距离无线通信&#xff…

小而强大!零一万物 Yi-Coder 模型震撼发布!

前沿科技速递&#x1f680; 在 AI 迅速发展的今天&#xff0c;代码生成和编辑工具已经成为开发者们追求高效开发的重要利器。近日&#xff0c;零一万物正式开源了 Yi-Coder 系列模型&#xff0c;一个专为编程任务设计的强大工具&#xff0c;为开发者们带来了全新的生产力提升方…

记录|C#的软件图标更换

目录 前言一、软件界面的图标二、软件外的图标更新时间 前言 参考文章&#xff1a; 自己开发出的软件&#xff0c;肯定要更换图标&#xff0c;无论是软件打开前还是软件上的。如下图&#xff1a; 一、软件界面的图标 直接在Form的属性中进行icon的更换【如下图&#xff1a;】…

2024年8款好用的图纸加密软件推荐|有效的图纸加密方法分享

在如今信息化迅速发展的时代&#xff0c;图纸作为企业的核心资产之一&#xff0c;特别是工程、制造、建筑等领域的CAD图纸&#xff0c;一旦泄露可能给企业带来巨大的经济损失和竞争风险。因此&#xff0c;如何有效地保护图纸安全&#xff0c;防止泄密&#xff0c;成为了每个企业…

记录:uniapp直播的弹幕的样式修改与发送弹幕会自动滚动到底部两个技巧

1、在直播页面的弹幕评论中&#xff0c;我们希望的样式是&#xff1a; 观众名字&#xff1a;评论 而且颜色有所区分&#xff0c;并在同一行显示 2、我们希望在发弹幕的时候可以回自动滚动到自己发的内容那里 一&#xff1a;弹幕样式修改 因为是小白&#xff0c;前端对于样式这…

Machine Learning Specialization 学习笔记(1)

文章目录 前言一、监督学习二、无监督学习三、一些基本概念线性回归模型简单线性回归多元线性回归模型训练模型评估应用 损失函数 &#xff08;cost function&#xff09;梯度下降 &#xff08;gradient descent&#xff09;多类特征&#xff08;multiple features&#xff09;…

微积分复习笔记 Calculus Volume 1 - 1.5 Exponential and Logarithmic Functions

1.5 Exponential and Logarithmic Functions - Calculus Volume 1 | OpenStax

JavaScript(进阶篇)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a;今天讲解的是JavaScript进阶&#xff0c;希望大家可以有所收获&#xff0c;话不多说&#xff0c;开干&#xff01; &#x1f525;&#x1f525;&#x1f525;文章专题&#xff1a;JavaScript &#x1f63d;感谢大家…

Numba坐标索引(CPU + 多线程)

文章目录 一、测试样本 —— 创建样本mask&#xff0c;具有 N 个唯一像素值&#xff0c;每个值有 M 个坐标。二、加速方法&#xff08;1&#xff09;多线程加速 —— 每次提取一个像素值&#xff0c;然后遍历图像&#xff0c;匹配并判断其与初始化坐标的关系。&#xff08;2&am…

传输层 I(传输层提供的服务、UDP协议)【★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 运输层是整个网络体系结构中的关键层次之一。一定要弄清以下一些重要概念&#xff1a; (1) 运输层为相互通信的应用进程提供逻辑通信。 (2) 端口和套接字的意义。 …

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中&#xff0c;模板匹配是一种常用的技术&#xff0c;用于在一幅较大的图像中查找与给定模板图像相似的部分。然而&#xff0c;在实际应用中&#xff0c;目标物体可能会出现在不同的角度&#xff0c;这就需要我们在匹配之前对模板进行旋转处理。本…

[AHK]动态创建带ListBox的窗口,答选择题的界面

根据传入的窗口标题、提示信息(题干)、列表(选项)生成一个带ListBox的窗口(向导界面)。 AHK v1代码 if(A_ScriptFullPath=A_LineFile)MsgBox % ListBox("窗口标题", "这是一个生成listbox的Demo", "a|b|c|d|",3) return ;-------------…

清华智普ChatGlm批量API多线程写文章软件【glm-4-flash的key免费无限写 】

清华智普GLM-4-Flash经全面测评&#xff0c;在语义理解、数学逻辑、逻辑推理、代码执行以及广泛知识覆盖等方面&#xff0c;其表现显著超越了Llama-3-8B模型。 清华智普GLM-4-Flash模型还具备多种核心功能&#xff0c;包括但不限于流畅的多轮对话能力、内置的网页浏览功能、直…

线上购物商城小程序,uniapp,PHP语言开发在线购物商城小程序

前言&#xff1a; 商城小程序能够帮助商家降低成本、提高效率&#xff0c;为用户提供更加便捷和个性化的购物体验&#xff0c;是移动互联网时代的一种高效商业工具。 一、商城小程序功能有哪些&#xff1f; 基础功能需求 用户注册与登录 - 用户可以通过手机号、微信等方式进…

【第25章】Spring Cloud之Sentinel控制台详解

文章目录 前言一、实时监控二、簇点链路三、流控规则四、熔断规则五、热点规则六、系统规则七、授权规则八、集群流控九、机器列表总结 前言 前面我们详细介绍了Sentinel控制台的安装过程&#xff0c;这里我们来了解各个菜单的功能作用。 一、实时监控 同一个服务下的所有机器…

【网络安全】分析JS文件实现账户接管

未经许可,不得转载。 文章目录 正文正文 网站使用的是简单的OTP(一次性密码)验证机制,通过用户注册时提供的电子邮件发送邮箱验证码。在功能有限的情况下,我选择去分析网站加载的JavaScript文件。 我发现了一个名为 saveJobseekerPasswordInCache 的函数: 这个函数虽然…

等待实质审查的商标可以用吗!

申请注册商标受理书下来后&#xff0c;会有一个等待实质审查&#xff0c;这个审查出来就会出现要么通过初审&#xff0c;要么驳回&#xff0c;要么部分驳回&#xff0c;普推知产商标老杨发现时间大约是三个月左右&#xff0c;所以基本从申请3个月左右就知道结果了。 申请注册商…

智算时空 重塑视界│智汇云舟2024视频孪生产品发布会圆满举行,多个“全球首款”重磅亮相

​秋风送爽&#xff0c;丹桂飘香。9月6日&#xff0c;由北京智汇云舟科技有限公司主办&#xff08;简称&#xff1a;智汇云舟&#xff09;&#xff0c;北京北科软科技有限公司&#xff08;简称&#xff1a;北科软&#xff09;、北京恒升联合科技有限公司&#xff08;简称&#…