HarmonyOS promptAction.openCustomDialog的绑定问题

promptAction.openCustomDialog中,builder :customDialogBuilder.bind(this),这个this是指当前Component 的struct吗?在TurboModule中是否可以调用promptAction.openCustomDialog这个自定义弹窗呢?

HarmonyOS
2024-08-23 09:50:43
1.1w浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

promptAction.openCustomDialog中绑定的this是当前@Entry的struct,必须绑定this才能使用

TurboModule的ts中无法获取到@Entry的struct,看看是否可以将@Entry的struct存储起来,在ts调用的时候再取出来使用;

可以在ArkTS侧使用自定义工具类将页面this存储起来,在RN侧通过TurboModule调用ArkTS侧打开弹窗的方法,在该方法中从工具类中获取页面this,就可以使用promptAction.openCustomDialog打开自定义弹窗了;或者可以使用@CustomDialog的方式打开自定义弹窗,参考  https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/arkts-common-components-custom-dialog-0000001580345182-V1#ZH-CN_TOPIC_0000001714587997__%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B

工具类可参考如下GlobalContext.ets:

export class GlobalContext { 
  private constructor() { 
  } 
 
  private static instance: GlobalContext; 
  private _objects = new Map<string, Object>(); 
 
 
  public static getContext(): GlobalContext { 
    if (!GlobalContext.instance) { 
      GlobalContext.instance = new GlobalContext(); 
    } 
    return GlobalContext.instance; 
  } 
 
 
  getObject(value: string): Object | undefined { 
    return this._objects.get(value); 
  } 
 
 
  setObject(key: string, objectClass: Object): void { 
    this._objects.set(key, objectClass); 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
已于2024-8-23 22:42:40修改
分享
微博
QQ
微信
回复
2024-08-23 14:54:27


相关问题
HarmonyOS promptAction.openCustomDialog问题
659浏览 • 1回复 待解决
promptAction.openCustomDialog 全局弹窗
1388浏览 • 1回复 待解决
promptAction.openCustomDialog 自定义弹窗
916浏览 • 1回复 待解决