HarmonyOS | 状态管理(七) | AppStorage(应用级UI状态存储)

系列文章目录

1.HarmonyOS | 状态管理(一) | @State装饰器
2.HarmonyOS | 状态管理(二) | @Prop装饰器
3.HarmonyOS | 状态管理(三) | @Link装饰器
4.HarmonyOS | 状态管理(四) | @Provide和@Consume装饰器
5.HarmonyOS | 状态管理(五) | @Observed装饰器和@ObjectLink装饰器
6.HarmonyOS | 状态管理(六) | LocalStorage(页面级UI状态存储)



前言

上一篇文章讲解了页面级状态存储,本篇文章我们来看看应用级状态存储。


一、AppStorage 是什么?

AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。

二、AppStorage关联的两个装饰器

@StorageProp:@StorageProp(key) 和AppStorage中key对应的属性建立单向数据同步
@StorageLink:@StorageLink(key) 和AppStorage中key对应的属性建立双向数据同步

1.@StorageProp

AppStorage.SetOrCreate('Prop',60)

@Entry
@Component
struct StoragePropPage {
  @StorageProp('Prop') storagePropOne: number = 1;

  build() {
    Column({ space: 15 }) {
      // 点击后从60开始加1,只改变当前组件显示的storagePropOne,不会同步到AppStorage中
      Button(`Parent from AppStorage ${this.storagePropOne}`).onClick(() => this.storagePropOne += 1)
      ChildStorageProp()
    }
  }
}

@Component
struct ChildStorageProp {
  // @LocalStorageProp变量装饰器与LocalStorage中的'Prop'属性建立单向绑定
  @StorageProp('Prop') storagePropTwo: number = 2;

  build(){
    Column({ space: 15 }) {
      // 当StoragePropPage改变时,当前storagePropTwo不会改变,显示60
      Text(`Parent from AppStorage ${this.storagePropTwo}`)
    }
  }
}

2.@StorageLink

AppStorage.SetOrCreate('PropA', 50)

@Entry
@Component
struct StorageLinkPage {
  @StorageLink('PropA') storageLink:number = 1

  build() {
    Column({ space: 20 }) {
      Text(`From AppStorage ${this.storageLink}`)
        .onClick(() => this.storageLink += 1)
    }
  }
}

三、总结

  1. AppStorage 是应用全局的UI状态存储。

  2. @StorageProp(key) 和AppStorage中key对应的属性建立单向数据同步。

  3. @StorageLink(key) 和AppStorage中key对应的属性建立双向数据同步。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭祖爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值