EventPost

简介

EventPost是一款消息总线,具有生命周期感知能力,支持Sticky。

  • 支持Sticky消息;
  • 支持在组件初始化完成时自动注册
  • 支持组件销毁时自动注销,防止内存泄漏;

下载安装

ohpm install eventpost

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包

使用说明

可选初始化

import { EventPost } from "eventpost";

EventPost.setAllSticky(true | false)

注册订阅者

import { EventPost } from "eventpost";

EventPost.getDefault().on("msgId", (arg1:object, arg2:object) => {
})
  • 使用限制,不添加callThis 则this指向 undefined 添加callThis,则this指向callThis
import {Subscriber} from "eventpost";

@Component
struct NextPage {
  
  build(){
    ...
  }
  
  @Subscriber("msgId")
  onMsg(arg1:object,arg2:object){
  }
}
  • 目前仅在使用装饰器的情况下能够感知组件生命周期
  • 使用on的方法注册的话,需要自行off防止内存泄漏

发送消息

import { EventPost } from "eventpost";

EventPost.getDefault().post("msgId", "arg1", { params1: "bbb" })

接口说明

EventPost

方法名 入参 接口描述
setAllSticky boolean 配置基础消息发送是否为粘性事假,默认为粘性,跨线配置非粘性,则每个线程均要初始化
on string,function,sticky,callThis 注册订阅方法,并配置是否支持粘性
off string,function 反注册订阅方法
once string,function,callThis 注册一次性订阅方法
post string,...args:any[] 发送消息(受配置影响)
postStick string,...args:any[] 发送粘性消息
postNormal string,...args:any[] 发送非粘性消息
getTypeValue string 获取当前粘性事件

Subscriber 装饰器

接口名 功能描述描述
TypeName 消息ID
sticky 是否支持粘性

约束与限制

在下述版本验证通过:

DevEco Studio: 5.0.5.315, SDK: HarmonyOS 5.0.1 Release Ohos_sdk_public 5.0.1.115 (API Version 13 Release)

目录结构

|---- eventpost
|     |---- AppScrope  # 示例代码文件夹
|     |---- entry  # 示例代码文件夹
|     |---- examples # 示例代码文件夹  
|     |---- library # eventpost库文件夹  
|           |---- build  # eventpost模块打包后的文件
|           |---- src/main/ets/eventpost # EventPost主入口
|           |---- index.ets  # 对外接口     
|     |---- README.md  # 安装使用方法
|     |---- CHANGELOG.md  # 更新日志

贡献代码

使用过程中发现任何问题都可以提 Issue 给我,当然,我也非常欢迎你给我发 PR

开源协议

本项目基于 MIT license ,请自由地享受和参与开源。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐