HarmonyOS 鸿蒙Next @StorageLink(key)和AppStorage建立双向数据同步
HarmonyOS 鸿蒙Next @StorageLink(key)和AppStorage建立双向数据同步
文档原话: 本地修改发生,该修改会被写回AppStorage中;
问题: 如下代码,修改了@StorageLink修饰的storLink的值,但是并没有写回AppStorage中
是我哪里理解错了吗,请各位指点~
AppStorage.SetOrCreate('PropA', 47);
@Entry()
@Component
struct AppStorageLink {
[@StorageLink](/user/StorageLink)('PropA') storLink: number = 1;
build() {
Column({ space: 20 }) {
Text(`From AppStorage ${this.storLink}`).width(200).height(50).backgroundColor('#c0c0c0')
.onClick(() => this.storLink += 1)
Text(`${AppStorage.Link('PropA').get()}`)
Text(`${AppStorage.Get('PropA')}`)
}
}
}
更多关于HarmonyOS 鸿蒙Next @StorageLink(key)和AppStorage建立双向数据同步的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决啦,获取AppStorage的值需要被**@State**修饰才能看出来改变啊!哥!
AppStorage.SetOrCreate('PropA', 47);
@Entry()
@Component
struct AppStorageLink {
@StorageLink('PropA') storLink: number = 1;
[@State](/user/State) num: number = 0
build() {
Column({ space: 20 }) {
Text(`From AppStorage ${this.storLink}`).width(200).height(50).backgroundColor('#c0c0c0')
.onClick(() => {
this.storLink += 1
this.num = AppStorage.Get('PropA')
})
Text(`${AppStorage.Link('PropA').get()}`)
Text(`${AppStorage.Get('PropA')}`)
Text(this.num.toString())
}
}
}
把@StorageLink 换成@StorageProp, 可以实现一样的效果,点击依旧可以自增一, 区别在哪呀
双向绑定,但是在AppStorage中读取不到改变后的值呀,
在HarmonyOS中,@StorageLink(key)
和AppStorage
用于实现组件与全局应用存储之间的双向数据同步。AppStorage
是鸿蒙应用中的全局单例对象,用于存储应用的全局状态数据。@StorageLink(key)
是一个装饰器,用于将组件的属性与AppStorage
中的指定键值进行绑定。
当使用@StorageLink(key)
装饰一个组件属性时,该属性会自动与AppStorage
中对应的键值建立双向绑定关系。这意味着,当AppStorage
中的值发生变化时,绑定的组件属性会自动更新;反之,当组件属性发生变化时,AppStorage
中的对应值也会同步更新。
例如,假设在AppStorage
中有一个键为userName
的值,你可以在组件中使用@StorageLink('userName')
来绑定这个值。这样,组件中的userName
属性会与AppStorage
中的userName
保持同步。
这种机制简化了状态管理,使得开发者无需手动处理数据的同步和更新逻辑。@StorageLink(key)
和AppStorage
的结合使用,特别适用于需要在多个组件之间共享和同步状态的场景。
总结来说,@StorageLink(key)
和AppStorage
通过双向绑定机制,实现了组件与全局存储之间的高效数据同步,提升了应用的状态管理效率。