HarmonyOS NEXT 实战系列07-应用状态
应用状态-AppStorage AppStorage 是应用全局的UI状态存储,不同于 @State 等装饰器仅能在组件树上传递,AppStorage的目的是为了给开发者提供更大范围的跨 Ability 基本的数据共享。 设置或创建全局UI状态 setOrCreate(propName: string, newValue: T): void interface User { name: string age: number } AppStorage.setOrCreate('user', { name: 'jack', age: 18 }) 获取全局UI状态 get(propName: string): T | undefined const user = AppStorage.get('user') @StorageProp(key) 全局UI状态单向数据同步至组件 @StorageProp('user') user: User = { name: '', age: 0 } @StorageLink(key) 全局UI状态双向数据同步至组件 @StorageLink('user') user: User = { name: '', age: 0 } 2. 应用状态-持久化 PersistentStorage 提供状态变量持久化的能力,但是需要注意,其持久化和读回UI的能力都需要依赖AppStorage。PersistentStorage 将选定的 AppStorage 属性保留在设备磁盘上。 初始化在页面加载完成后进行 interface User { name: string age: number } PersistentStorage.persistProp('user', { name: '', age: 0 }) 其持久化和读回UI的能力都需要依赖 AppStorage 设置全局UI状态 set(propName: string, newValue: T): boolean AppStorage.set('user', { name: 'Jack', age: 18 }) 获取全局UI状态 get(propName: string): T | undefined const user = AppStorage.get('user') @StorageProp(key) 全局UI状态单向数据同步至组件 @StorageProp('user') user: User = { name: '', age: 0 } @StorageLink(key) 全局UI状态双向数据同步至组件 @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渲染性能。

- 应用状态-AppStorage AppStorage 是应用全局的UI状态存储,不同于 @State 等装饰器仅能在组件树上传递,AppStorage的目的是为了给开发者提供更大范围的跨 Ability 基本的数据共享。
设置或创建全局UI状态 setOrCreate(propName: string, newValue: T): void
interface User {
name: string
age: number
}
AppStorage.setOrCreate<User>('user', { name: 'jack', age: 18 })
获取全局UI状态 get(propName: string): T | undefined
const user = AppStorage.get<User>('user')
@StorageProp(key) 全局UI状态单向数据同步至组件
@StorageProp('user')
user: User = {
name: '',
age: 0
}
@StorageLink(key) 全局UI状态双向数据同步至组件
@StorageLink('user')
user: User = {
name: '',
age: 0
}
2. 应用状态-持久化
PersistentStorage 提供状态变量持久化的能力,但是需要注意,其持久化和读回UI的能力都需要依赖AppStorage。PersistentStorage 将选定的 AppStorage 属性保留在设备磁盘上。
初始化在页面加载完成后进行
interface User {
name: string
age: number
}
PersistentStorage.persistProp<User>('user', { name: '', age: 0 })
其持久化和读回UI的能力都需要依赖 AppStorage
设置全局UI状态 set(propName: string, newValue: T): boolean
AppStorage.set<User>('user', { name: 'Jack', age: 18 })
获取全局UI状态 get(propName: string): T | undefined
const user = AppStorage.get<User>('user')
@StorageProp(key) 全局UI状态单向数据同步至组件
@StorageProp('user')
user: User = {
name: '',
age: 0
}
@StorageLink(key) 全局UI状态双向数据同步至组件
@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渲染性能。