首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS NEXT 实战系列07-应用状态

HarmonyOS NEXT 实战系列07-应用状态

原创
作者头像
用户8181473
发布2025-03-17 22:40:22
发布2025-03-17 22:40:22
1240
举报

1. 应用状态-AppStorage

AppStorage 是应用全局的UI状态存储,不同于 @State 等装饰器仅能在组件树上传递,AppStorage的目的是为了给开发者提供更大范围的跨 Ability 基本的数据共享。

设置或创建全局UI状态 setOrCreate<T>(propName: string, newValue: T): void

代码语言:txt
复制
interface User {
  name: string
  age: number
}
 
AppStorage.setOrCreate<User>('user', { name: 'jack', age: 18 })
获取全局UI状态 get<T>(propName: string): T | undefined
const user = AppStorage.get<User>('user')
@StorageProp(key) 全局UI状态单向数据同步至组件
@StorageProp('user')
user: User = {
  name: '',
  age: 0
}

@StorageLink(key) 全局UI状态双向数据同步至组件

代码语言:txt
复制
@StorageLink('user')
user: User = {
  name: '',
  age: 0
}
2. 应用状态-持久化

PersistentStorage 提供状态变量持久化的能力,但是需要注意,其持久化和读回UI的能力都需要依赖AppStorage。PersistentStorage 将选定的 AppStorage 属性保留在设备磁盘上。

初始化在页面加载完成后进行

代码语言:txt
复制
interface User {
  name: string
  age: number
}
 
PersistentStorage.persistProp<User>('user', { name: '', age: 0 })

其持久化和读回UI的能力都需要依赖 AppStorage

设置全局UI状态 set<T>(propName: string, newValue: T): boolean

代码语言:txt
复制
AppStorage.set<User>('user', { name: 'Jack', age: 18 })

获取全局UI状态 get<T>(propName: string): T | undefined

代码语言:txt
复制
const user = AppStorage.get<User>('user')
@StorageProp(key) 全局UI状态单向数据同步至组件
@StorageProp('user')
user: User = {
  name: '',
  age: 0
}
@StorageLink(key) 全局UI状态双向数据同步至组件

代码语言:txt
复制
@StorageLink('user')
user: User = {
  name: '',
  age: 0
}

持久化文件:

启动模拟器运行应用后,打开编辑器右下角 Device File Browser 查看

目录 /data/app/el2/100/base/包名/haps/entry/files/persistent_storage

注意:

PersistentStorage的持久化变量最好是小于2kb的数据,不要大量的数据持久化,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/zsgzsgzsgzsgzsg/article/details/146198772

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档