HarmonyOS 鸿蒙Next ArkTS中globalThis无法使用该如何替换

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ArkTS中globalThis无法使用该如何替换

ArkTS中globalThis无法使用该如何替换 ?

5 回复

ArkTS不支持动态更改对象的布局,因此不支持全局作用域和globalThis。替换方案参考如下:

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

import { common } from '@kit.AbilityKit'; 

// 构造单例对象 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; } }

2.使用:

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(“getValue”) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(() => { this.value = GlobalThis.getInstance().getValue(); }) } .width(‘100%’) } .height(‘100%’) } }

参考链接

适配指导案例

大佬 你这种方式可以存储多个值吗?

Cannot find module '[@kit](/user/kit).AbilityKit' or its corresponding type declarations. <ArkTSCheck>

api11都不支持,要api12才行吧。

import common from ‘@ohos.app.ability.common’;

在HarmonyOS鸿蒙Next ArkTS中,由于ArkTS不支持动态更改对象的布局,因此也不支持全局作用域和globalThis。针对这一问题,可以通过构造单例对象来实现类似全局访问的功能。

具体替换方案如下:

  1. 构造单例类:创建一个包含所需全局变量的单例类,并通过私有构造函数和静态的getInstance方法来确保类的单例性。在这个类中,可以定义各种全局变量和方法来模拟globalThis的功能。
  2. 全局变量访问:通过单例类的实例来访问和修改全局变量,而不是直接使用globalThis

例如,可以创建一个名为GlobalContext的单例类,其中包含多个全局变量和方法。在需要访问这些全局变量的地方,通过GlobalContext.getInstance()来获取单例对象,并进而访问其内部的变量或方法。

如果问题依旧没法解决,请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,你可以获得更专业的技术支持和帮助。

回到顶部