从API version 7开始,支持该装饰器。
您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。
@StorageProp用于状态管理V1中,与AppStorage中对应的属性建立单向数据同步。AppStorage中对应属性的变化会同步到@StorageProp装饰的变量,但仅修改@StorageProp装饰的变量不会同步回AppStorage。适用于需要跨页面、跨Ability感知AppStorage全局状态变化且仅保持单向数据流的场景,可避免不必要的数据回写。
开发指南参考:AppStorage:应用全局的UI状态存储。
从API version 7开始,支持该装饰器。
const StorageProp: (value: string) => PropertyDecorator
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | string | 是 | AppStorage中的属性键名,用于与该键名对应的属性建立单向数据同步。若AppStorage中已存在该键名对应的属性,则@StorageProp装饰变量的本地初始值将被AppStorage中对应属性的值覆盖;若AppStorage中不存在该键名对应的属性,则使用@StorageProp装饰变量的本地初始值在AppStorage中创建该属性。 |
返回值:
| 类型 | 说明 |
|---|---|
| PropertyDecorator | 属性装饰器,开发者无需关注该返回值。 |
示例:
- // 创建AppStorage的初始数据,键为'PropA',值为47
- AppStorage.setOrCreate('PropA', 47);
- // 创建AppStorage的初始数据,键为'PropB',值为undefined
- AppStorage.setOrCreate('PropB', undefined);
-
- @Entry
- @Component
- struct StoragePropComponent {
- // 使用@StorageProp装饰器与AppStorage中'PropA'对应属性建立单向数据同步
- // AppStorage变化会同步到组件,但组件本地修改不会同步回AppStorage
- @StorageProp('PropA') propA: number | null = null;
- // 使用@StorageProp装饰器与AppStorage中'PropB'对应属性建立单向数据同步
- @StorageProp('PropB') propB: number | undefined = undefined;
-
- build() {
- Column() {
- Text('@StorageProp接口初始化,@StorageProp取值')
- Text(`${this.propA}`)
- .fontSize(20)
- .onClick(() => {
- // 点击切换propA的值,该变更不会同步到AppStorage
- this.propA = this.propA ? null : 1;
- })
- Text(`${this.propB}`)
- .fontSize(20)
- .onClick(() => {
- // 点击切换propB的值,该变更不会同步到AppStorage
- this.propB = this.propB ? undefined : 1;
- })
- }
- }
- }
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功