HarmonyOS 鸿蒙Next 事件回调

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,
            }
          };

          let innerEvent: emitter.InnerEvent = {
            eventId: 12222,
            priority: emitter.EventPriority.HIGH
          };
          //发布id为12222的事件
          emitter.emit(innerEvent, eventData);
        })
    }
    .justifyContent(FlexAlign.Center)
    .width('100%')
    .height('100%')
  }
}

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

更多关于HarmonyOS 鸿蒙Next 事件回调的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


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

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

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

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

回到顶部