GlobalThis替代方案有哪些?

​GlobalThis替代方案


HarmonyOS
2024-05-26 17:55:47
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
胖头鱼圆滚滚

背景

ArkTS语法不支持直接使用globalThis。

解决方案

通过一个单例的map来做中转

import common from '@ohos.app.ability.common'; 
  
// 构造单例对象 
export class GlobalThis { 
  private constructor() {} 
  private static instance: GlobalThis; 
  private _uiContexts = new Map<string, common.UIAbilityContext>(); 
  private value = ''; 
  
  public static getInstance(): GlobalThis { 
    if (!GlobalThis.instance) { 
      GlobalThis.instance = new GlobalThis(); 
    } 
    return GlobalThis.instance; 
  } 
  
  getContext(key: string): common.UIAbilityContext | undefined { 
    return this._uiContexts.get(key); 
  } 
  
  setContext(key: string, value: common.UIAbilityContext): void { 
    this._uiContexts.set(key, value); 
  } 
  
  setValue(value:string){ 
    this.value = value 
  } 
  
  getValue():string{ 
    return this.value 
  } 
}

使用

import { GlobalThis } from '../utils/globalThis'; 
  
@Entry 
@Component 
struct Index { 
  @State value:string = GlobalThis.getInstance().getValue() 
  
  build() { 
    Row() { 
      Column() { 
        Text(this.value) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
        Button("setValue") 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            GlobalThis.getInstance().setValue("TEST") 
          }) 
        Button("setValue") 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            this.value =  GlobalThis.getInstance().getValue() 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-05-27 22:42:36
相关问题
HarmonyOS scheme是否替代方案
369浏览 • 1回复 待解决
是否替代方案
4458浏览 • 2回复 待解决
HarmonyOS换肤方案哪些
389浏览 • 1回复 待解决
HarmonyOS 换肤方案哪些
226浏览 • 1回复 待解决
图像处理库是否替代的解决方案
341浏览 • 0回复 待解决
ImageReader 在HarmonyOS的替代方案
1552浏览 • 1回复 待解决
多签名打包选择方案哪些
292浏览 • 1回复 待解决
多工程项目打包方案哪些
636浏览 • 1回复 待解决
基于HarmonyOS实现H5离线方案哪些
212浏览 • 1回复 待解决
SpannableString替代的吗?
6063浏览 • 1回复 待解决
Harmony API9之后 GIS 解决方案哪些
2148浏览 • 1回复 待解决
LocalParticleAbility替代的方法吗?
2913浏览 • 1回复 待解决
computeScroll() 方法鸿蒙什么可以替代
5634浏览 • 1回复 待解决
HarmonyOS 人脸SDK是不是替代
355浏览 • 1回复 待解决