HarmonyOS promptAction弹窗在axios.request()的回调中无法执行

接口请求后如果成功或者报错,在接口请求的回调中,用promptAction弹窗弹出错误信息。

HarmonyOS
23h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​这里是因为箭头函数this指向的问题,您需要手动获取UIContext,示例如下:

1、创建一个全局Context,GlobalContext.etx:​

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

2、在【EntryAbility.ets  -->   onWindowStageCreate】中,获取主窗口:

GlobalContext.getContext().setObject("windowStage", windowStage);

3、调用:

let windowStage = GlobalContext.getContext().getObject("windowStage") as window.WindowStage  
windowStage.getMainWindowSync().getUIContext().getPromptAction().showToast({  
   message:'请求失败'  
});

这是因为直接预览时,不会编译EntryAbility.ets这个文件,所以不会保存主页面的windowStage,在模拟器上就会编译EntryAbility.ets这个文件。

分享
微博
QQ
微信
回复
17h前
相关问题
ForEach真机上无法执行
1735浏览 • 1回复 待解决
DevEco无法执行Previewer
289浏览 • 1回复 待解决
@Watch装饰器执行顺序
93浏览 • 1回复 待解决
NAPI执行上层时,如何获取env
2060浏览 • 1回复 待解决
焦点事件onBlur/onFocus无法触发
1783浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人