【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
}