HarmonyOS 鸿蒙Next,自定义事件,订阅与发布
HarmonyOS 鸿蒙Next,自定义事件,订阅与发布
import { promptAction, router } from '@kit.ArkUI’
import { emitter } from ‘@kit.BasicServicesKit’;
//订阅发布案例
// 注意
// 自定义事件
// 1.订阅后才能发送消息
@Entry
@Component
struct Index {
aboutToAppear(): void {
this.bak()
}
bak(){
// 定义一个eventId为1的事件
let event: emitter.InnerEvent = {
eventId: 1
};
// 收到eventId为1的事件后执行该回调
let callback = (eventData: emitter.EventData): void => {
console.log(JSON.stringify(eventData.data?.content),‘777777777’)
// promptAction.showToast({
// message: JSON.stringify(eventData.data?.content)
// });
};
// 订阅eventId为1的事件
emitter.on(event, callback);
}
build() {
Column() {
Button(‘ahhh’)
.onClick(()=>{
router.pushUrl({
url:‘pages/LoginPage’
})
console.log(‘111111’)
})
Button(‘事件接收消息’)
.onClick(()=>{
// console.log(‘jjjjjjjjjjjj’)
})
}
.height(‘100%’)
.width(‘100%’)
}
}
import { router } from ‘@kit.ArkUI’;
import { emitter } from ‘@kit.BasicServicesKit’;
@Entry
@Component
struct LoginPage {
@State message: string = ‘返回’;
build() {
Column() {
Button(‘发送消息’).onClick(()=>{
// 定义一个eventId为1的事件,事件优先级为Low
let event: emitter.InnerEvent = {
eventId: 1,
priority: emitter.EventPriority.LOW
};
let eventData: emitter.EventData = {
data: {
content: ‘数据’,
id: 1,
isEmpty: false
}
};
// 发送eventId为1的事件,事件内容为eventData
emitter.emit(event, eventData);
})
Text(this.message)
.id(‘LoginPageHelloWorld’)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: ‘container’, align: VerticalAlign.Center },
middle: { anchor: ‘container’, align: HorizontalAlign.Center }
})
.onClick(()=>{
router.back()
})
}
.height(‘100%’)
.width(‘100%’)
}
}
1 回复
在HarmonyOS鸿蒙Next中,自定义事件的订阅与发布是应用开发的重要功能之一。
自定义事件订阅:
开发者可以通过特定API为组件提供自定义的事件订阅能力。这允许组件根据事件信息(如事件在控件上的位置、输入源等)决定如何处理该事件。例如,在ArkTS中,可以使用onTouchIntercept方法来自定义触摸事件的拦截逻辑。
自定义事件发布:
事件的发布则涉及触发已订阅的事件。在HarmonyOS中,可以使用Emitter对象或其他类似机制来发布事件。Emitter对象具有持续订阅事件、单次订阅事件、取消订阅事件以及触发事件的能力。开发者可以根据需要创建Emitter对象,并为其添加事件监听器和回调函数,以便在事件被触发时执行相应的逻辑。
如果开发者在实现自定义事件的订阅与发布过程中遇到问题,建议查阅HarmonyOS官方文档或相关开发资料以获取更详细的指导。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。