文档管理中心

您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。

指南与API参考API参考应用框架ArkUI(方舟UI框架)ArkTS组件状态管理与渲染控制状态管理V1装饰器@StorageProp:AppStorage单向数据同步

@StorageProp:AppStorage单向数据同步

Phone12+PC/2in113+Tablet12+TV19+Wearable18+
本文导读

@StorageProp用于状态管理V1中,与AppStorage中对应的属性建立单向数据同步。AppStorage中对应属性的变化会同步到@StorageProp装饰的变量,但仅修改@StorageProp装饰的变量不会同步回AppStorage。适用于需要跨页面、跨Ability感知AppStorage全局状态变化且仅保持单向数据流的场景,可避免不必要的数据回写。

开发指南参考:AppStorage:应用全局的UI状态存储。

说明

从API version 7开始,支持该装饰器。

@StorageProp

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

const StorageProp: (value: string) => PropertyDecorator

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value string 是 AppStorage中的属性键名,用于与该键名对应的属性建立单向数据同步。若AppStorage中已存在该键名对应的属性,则@StorageProp装饰变量的本地初始值将被AppStorage中对应属性的值覆盖;若AppStorage中不存在该键名对应的属性,则使用@StorageProp装饰变量的本地初始值在AppStorage中创建该属性。

返回值:

展开
类型 说明
PropertyDecorator 属性装饰器,开发者无需关注该返回值。

示例:

收起
自动换行
深色代码主题
复制
  1. // 创建AppStorage的初始数据,键为'PropA',值为47
  2. AppStorage.setOrCreate('PropA', 47);
  3. // 创建AppStorage的初始数据,键为'PropB',值为undefined
  4. AppStorage.setOrCreate('PropB', undefined);
  5. @Entry
  6. @Component
  7. struct StoragePropComponent {
  8. // 使用@StorageProp装饰器与AppStorage中'PropA'对应属性建立单向数据同步
  9. // AppStorage变化会同步到组件,但组件本地修改不会同步回AppStorage
  10. @StorageProp('PropA') propA: number | null = null;
  11. // 使用@StorageProp装饰器与AppStorage中'PropB'对应属性建立单向数据同步
  12. @StorageProp('PropB') propB: number | undefined = undefined;
  13. build() {
  14. Column() {
  15. Text('@StorageProp接口初始化,@StorageProp取值')
  16. Text(`${this.propA}`)
  17. .fontSize(20)
  18. .onClick(() => {
  19. // 点击切换propA的值,该变更不会同步到AppStorage
  20. this.propA = this.propA ? null : 1;
  21. })
  22. Text(`${this.propB}`)
  23. .fontSize(20)
  24. .onClick(() => {
  25. // 点击切换propB的值,该变更不会同步到AppStorage
  26. this.propB = this.propB ? undefined : 1;
  27. })
  28. }
  29. }
  30. }