HarmonyOS promptAction.openCustomDialog的绑定问题

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

HarmonyOS
2024-08-23 09:50:43
浏览
收藏 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); 
  } 
}
已于2024-8-23 22:42:40修改
分享
微博
QQ
微信
回复
2024-08-23 14:54:27
相关问题
promptAction.openCustomDialog 全局弹窗
493浏览 • 1回复 待解决
promptAction.openCustomDialog 自定义弹窗
359浏览 • 1回复 待解决