【HarmonyOS NEXT】eventHub回调函数不绑定作用域的写法

156 阅读1分钟

【HarmonyOS NEXT】eventHub回调函数不绑定作用域的写法

问题背景:

在我们鸿蒙应用开发中,经常会用到eventhub来作用于事件的传递处理。

  aboutToAppear(): void {
    getContext().eventHub.on("test1", this.onCallback.bind(this));
  }
  
  aboutToDisappear(): void {
    getContext().eventHub.off("test1", this.onCallback.bind(this));
  }
  
  /**
   * 回调函数
   */
  private onCallback(){
    // doing
  }

其中回调函数onCallback我们必须要绑定bing作用域为当前,否则在回调函数中操作当前类的变量就会报错,找不到作用域。否则代码执行没有效果。

解决方案:

上述这种问题,其实属于java等编程语言的书写方式,在ArkTS中我们需要灵活使用箭头函数。

  aboutToAppear(): void {
    getContext().eventHub.on("test1", this.onCallback);
  }

  aboutToDisappear(): void {
    getContext().eventHub.off("test1", this.onCallback);
  }

  /**
   * 回调函数
   */
  private onCallback= ()=> {
    // doing
  }