OpenHarmony开发者论坛

标题: LocalStorage.getShared() 什么场景下会失效? [打印本页]

作者: w00416770    时间: 2025-1-26 11:24
标题: LocalStorage.getShared() 什么场景下会失效?
【问题描述】
问题现象和发生的背景
我有个场景:通过native回调arkts逻辑,此时LocalStorage.getShared()好像失效变成undefined了


相关的代码,截图,日志信息
(, 下载次数: 2)
左侧是之前的逻辑,右侧为规避方法修改后的逻辑。
我尝试过的解决方法和结果
直接从context中仍能获取到信息,支持不能从LocalStorage.getShared()获取到了

我想要达到的结果
想了解LocalStorage.getShared()的存在的原理,什么情况下会失效?

【运行环境】
硬件:had pc
ROM版本:最新开发分支镜像
DevEvoStudio版本:DevEco Studio 5.0.1 Release
SDK版本:5.0.1(13)

作者: kuaile    时间: 2025-2-14 14:02
限制条件
@LocalStorageProp/@LocalStorageLink的参数必须为string类型,否则编译期会报错。

let storage = new LocalStorage();
storage.setOrCreate('PropA', 48);

// 错误写法,编译报错
@LocalStorageProp() localStorageProp: number = 1;
@LocalStorageLink() localStorageLink: number = 2;

// 正确写法
@LocalStorageProp('PropA') localStorageProp: number = 1;
@LocalStorageLink('PropA') localStorageLink: number = 2;
@StorageProp与@StorageLink不支持装饰Function类型的变量,框架会抛出运行时错误。

LocalStorage创建后,命名属性的类型不可更改。后续调用Set时必须使用相同类型的值。

LocalStorage是页面级存储,getShared接口仅能获取当前Stage通过windowStage.loadContent传入的LocalStorage实例,否则返回undefined。例子可见将LocalStorage实例从UIAbility共享到一个或多个视图。


作者: kuaile    时间: 2025-2-14 14:18
实例不明确就会返回undefined,这个接口已经评审废弃了,使用UIContext去拿数据




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5