HarmonyOS 鸿蒙Next 事件回调

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 事件回调

有两个页面,A、B,在A中通过router.pushUrl方法跳转至B页面。B页面有一个按钮btn,点击btn时,如何将btn的触发事件告知A页面。B页面从始至终不进行back(返回)。

2 回复
可以使用自定义订阅事件的方式来实现该功能:
//index.ets
import display from '@ohos.display';
import emitter from '@ohos.events.emitter';
import { router } from '@kit.ArkUI';
import { JSON } from '@kit.ArkTS';

@Entry @Component struct DisplayTest {

build() { Column({space:20}){ Button(‘Test’) .type(ButtonType.Capsule) .onClick(() => { let innerEvent: emitter.InnerEvent = { eventId: 12222 }; //触发id为12222的事件 emitter.on(innerEvent, (data) => { console.info(‘once callback’ + JSON.stringify(data)); }); router.pushUrl({ url:‘pages/PageOne’ }) }) .width(‘50%’) } .width(“100%”) .height(‘100%’) .justifyContent(FlexAlign.Center) } }

//PageOne.ets import emitter from ‘@ohos.events.emitter’;

@Entry @Component struct PageOne {

build() { Column(){ Text(‘PageOne’) .width(‘50%’) Button(‘send’) .type(ButtonType.Capsule) .width(‘50%’) .onClick(() => { let eventData: emitter.EventData = { data: { “content”: “c”, “id”: 1, } };

      <span class="hljs-keyword">let</span> innerEvent: emitter.InnerEvent = {
        eventId: <span class="hljs-number">12222</span>,
        priority: emitter.EventPriority.HIGH
      };
      <span class="hljs-comment">//发布id为12222的事件</span>
      emitter.emit(innerEvent, eventData);
    })
}
.justifyContent(FlexAlign.Center)
.width(<span class="hljs-string">'100%'</span>)
.height(<span class="hljs-string">'100%'</span>)

} }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-0000001860296413#ZH-CN_TOPIC_0000001860296413__emitteremit

HarmonyOS 鸿蒙Next事件回调机制是开发中的关键部分,它允许开发者为组件的特定事件设置响应函数,从而在事件发生时执行相应的逻辑。

在HarmonyOS 鸿蒙Next中,事件回调主要通过为组件设置事件监听器来实现。例如,对于触摸事件,开发者可以为需要响应触摸的组件设置onTouch事件监听器。当触摸事件发生时,系统会调用该监听器中的回调函数,并传递一个包含事件信息的TouchEvent对象作为参数。开发者可以在回调函数中根据事件类型(如按下、移动、抬起等)编写相应的处理逻辑。

此外,事件回调还涉及事件的传播机制。HarmonyOS 鸿蒙Next提供了冒泡机制,允许事件在组件树中向上传播,直到找到处理该事件的组件或到达根节点。开发者可以通过控制事件的传播范围来优化性能,避免不必要的计算和资源消耗。

如果在使用事件回调时遇到问题,建议仔细检查事件监听器的设置、回调函数的编写以及事件的传播机制。同时,确保组件的可见性、大小和位置设置正确,以避免触摸区域不符合预期。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部