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

news/2024/7/21 11:36:25 标签: harmonyos, 华为, AppStorage

系列文章目录

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


文章目录

  • 系列文章目录
  • 前言
  • 一、AppStorage 是什么?
  • 二、AppStorage关联的两个装饰器
    • 1.@StorageProp
    • 2.@StorageLink
  • 三、总结


前言

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


AppStorage__19">一、AppStorage 是什么?

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

AppStorage_22">二、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对应的属性建立双向数据同步。


http://www.niftyadmin.cn/n/5397986.html

相关文章

代码遗产:探索祖传代码的历史、挑战与现代融合艺术

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

AutoGen Studio助力打造私人GPTs

微软最近在开源项目里的确挺能整活儿啊! 这次我介绍的是AutoGen Studio,我认为这个项目把AutoGen可用性又拔高了一个层次的项目 项目给自己的定义是交互式的多Agent workflow 项目地址:autogen/samples/apps/autogen-studio at main microsoft/autogen (github.com) 首先我…

如何更好地准备考研复试呢

准备研究生复试需要全面而细致的策略,以下是一些建议,帮助你更好地应对复试: 深入了解复试流程和要求: 详细了解复试的流程、考察内容和评分标准,确保你对每个环节都有清晰的认识。如果可能,可以向学长学姐…

我是驱魔人 I am The Exorcist 中文免安装版

《我是驱魔人》是一款以驱魔为主题的角色扮演游戏,游戏中玩家将扮演一名驱魔师,探索各种恐怖的灵异事件,挑战邪恶的鬼怪,解救受困的灵魂。游戏结合了中国传统文化和现代元素,为玩家带来一场惊心动魄的冒险之旅。 在游戏…

vue2+elementui上传照片(el-upload 超简单)

文章目录 element上传附件(el-upload 超详细)代码展示html代码data中methods中接口写法 总结 element上传附件(el-upload 超详细) 这个功能其实比较常见的功能,后台管理系统基本上都有,这就离不开element的…

微服务之qiankun主项目+子项目搭建

主项目使用history,子项目使用hash模式 1. 下载安装"qiankun": "^2.10.13"2. 手动调用qiankun,使用vue脚手架搭建的项目1. 主项目配置(我使用的是手动调用乾坤,在指定页面显示内容)1. 要使用的页面中引入乾坤…

投影坐标系转为地理坐标系:GDAL命令行实现

本文介绍基于gdal模块,在命令行中通过GDAL命令的方式,将栅格遥感影像的投影坐标系转为地理坐标系的方法。 在之前的博客中,我们曾多次介绍过将图层的地理坐标系转为投影坐标系的方法,也就是投影操作——例如文章ArcGIS矢量图层投影…

QT之QSharedMemory共享内存

QSharedMemory是qt提供对共享内存操作的类,主要用来对内存卡写数据和读数据。 常用api: 1、void QSharedMemory::setKey(const QString &key) 为共享内存设置键值。如何当前的内存共享对象已经链接到底层的共享内存段(isAttached)&…