HarmonyOS 鸿蒙Next AppStorageV2如何取出AppStorageV1中的数据
HarmonyOS 鸿蒙Next AppStorageV2如何取出AppStorageV1中的数据 比如:
在组件A(V1)中: AppStorage.setOrCreate('bbbb', '1111')
,
在组建B(V2)中:
@Local storage: Param11 = AppStorageV2.connect(Param11, 'bbbb', () => new Param11)!;
@ObservedV2
class Param11 {
@Trace bbbb: number = 0
}
组件B中并不能取出组件A存储的bbbb字段及其对应的value。
我知道组件B外套个Bridge(V1),进行Watch再传给组件B,是可以的。但是我想知道有没有更直接方法获取(在V2组件中),类似我上面的案例
更多关于HarmonyOS 鸿蒙Next AppStorageV2如何取出AppStorageV1中的数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
关于AppStorage v1和v2 是两套不同的东西不共通,关于状态管理是使用同一套来进行管理,这种场景可以参考这个demo:
//index.ets:
import { router } from '@kit.ArkUI';
class Data {
code: number;
constructor(code: number) {
this.code = code;
}
}
AppStorage.setOrCreate('PropA', 47);
AppStorage.setOrCreate('PropB', new Data(50));
@Entry()
@Component
struct Index {
@StorageLink('PropA') storageLink: number = 1;
@StorageLink('PropB') storageLinkObject: Data = new Data(1);
build() {
Column({ space: 20 }) {
Text(`From AppStorage ${this.storageLink}`)
.onClick(() => {
this.storageLink += 1;
})
Text(`From AppStorage ${this.storageLinkObject.code}`)
.onClick(() => {
this.storageLinkObject.code += 1;
})
Button('toV2')
.onClick(()=>{
router.pushUrl({url:'pages/PageV2'})
})
}
}
}
//PageV2.ets:
import { router } from '@kit.ArkUI';
import { AppStorageV2 } from '@kit.ArkUI';
import { Sample } from '@kit.ArkUI';
class Data {
code: number;
constructor(code: number) {
this.code = code;
}
}
// 数据中心
@ObservedV2
export class Sample {
@Trace p1: number = 0;
p2: number = 10;
}
let value: number = AppStorage.get('PropA') as number;
@Entry()
@ComponentV2
struct Index2 {
@Local prop: Sample = AppStorageV2.connect(Sample, () => new Sample())!;
build() {
Column({ space: 20 }) {
Text(''+value)
// 获取当前AppStorageV2里面的所有key
Text(`all keys in AppStorage: ${AppStorageV2.keys()}`)
.fontSize(30)
Button('back')
.onClick(()=>{
router.back()
})
}
}
}
在设计上,希望V1和V2的代码是完全隔离的,因为V1能实现的功能,V2能做的更好。但从实际角度出发,V1已经有很大的基础,一次性迁移成V2也不符合实际,因此在V1的代码中使用V2的部分能力是允许的,V2中也没有完全禁止V1
关于v1和v2的混用可以参考文档: 华为开发者官网
更多关于HarmonyOS 鸿蒙Next AppStorageV2如何取出AppStorageV1中的数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
不同存放方式吧 v1跟v2不能混用这个
在HarmonyOS鸿蒙Next中,AppStorageV2
与AppStorageV1
的数据结构并不直接兼容。要从AppStorageV1
中取出数据,首先需要将AppStorageV1
的数据导出为JSON格式,然后将该JSON数据导入到AppStorageV2
中。具体步骤如下:
-
导出
AppStorageV1
数据:使用AppStorageV1
的exportData()
方法将数据导出为JSON字符串。 -
导入
AppStorageV2
数据:使用AppStorageV2
的importData()
方法将JSON字符串导入到AppStorageV2
中。
以下是示例代码:
// 导出AppStorageV1数据
const v1Data = AppStorageV1.exportData();
// 导入AppStorageV2数据
AppStorageV2.importData(v1Data);