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

2024-02-29 14:28

本文主要是介绍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关联的两个装饰器
    • 1.@StorageProp
    • 2.@StorageLink
  • 三、总结


前言

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


一、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不会改变,显示60Text(`Parent from AppStorage ${this.storagePropTwo}`)}}
}

2.@StorageLink

AppStorage.SetOrCreate('PropA', 50)@Entry
@Component
struct StorageLinkPage {@StorageLink('PropA') storageLink:number = 1build() {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对应的属性建立双向数据同步。

这篇关于HarmonyOS | 状态管理(七) | AppStorage(应用级UI状态存储)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759113

相关文章

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现