当前位置: 首页 > web >正文

鸿蒙:AppStorageV2状态管理和数据共享

前言:

之前就用过AppStorageV2做数据共享,但是没怎么弄明白使用方法,今天研究了一阵,跟大家分享下研究结果。

我们还是和之前一样,参考官方文档和示例代码进行学习,链接如下:

文档中心https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-new-appstoragev2这里我就简单总结一下:

1、AppStorageV2类似AppStorage,全局状态共享,主要是针对类的共享

2、如果想实现类数据变化,类需要加上@ObservedV2@Trace,并在@ComponentV2组件中配合@Local使用。

3、后面我的代码中的全局数据和组件内部的局部数据是不一样的,删除全局的数据,并不影响局部数据,所以UI不会变化。但是你打印全局的数据时,却发现没有了,那是因为被删掉了。

下面是自己研究,写的示例,大家可以配合官方文档参考下:

Index.ets


import { AppStorageV2 } from '@kit.ArkUI';
@ObservedV2
class Message{@Trace message: string = '';
}
@Entry
@ComponentV2
struct Index {@Local message: Message =AppStorageV2.connect( Message, () => new Message())!;build() {Column({space:20}) {Button(this.message.message == "" ?"点击赋值": this.message.message ).onClick(()=>{this.message.message = '父组件赋值'})// 子组件Son()// 测试Test()}.width("100%").height("100%").justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)}
}@ComponentV2
struct Test{build() {Column({space:20}){Button( "全局数据打印").onClick(()=>{let message = AppStorageV2.connect( Message, () => new Message())!;console.log("全局数据" + message.message)})Button("获取所有的key").onClick(()=>{let keys = AppStorageV2.keys()console.log("全局的keys" + keys)})Button( "删除全局数据").onClick(()=>{AppStorageV2.remove(Message)})}}
}@ComponentV2
struct Son {@Local message: Message =AppStorageV2.connect( Message, () => new Message())!;build() {Column() {Button(this.message.message == "" ?"点击赋值": this.message.message ).onClick(()=>{this.message.message = '子组件赋值'})}}
}

效果图:

以上是个人经验分享

http://www.xdnf.cn/news/20192.html

相关文章:

  • Gmail 数据泄露安全警报以及启示
  • 【Linux】线程概念与控制
  • 代码随想录刷题Day49
  • house (ai)
  • 对话Michael Truell:23岁创立Cursor,与Github Copilot竞争
  • 【C++上岸】C++常见面试题目--算法篇(第十九期)
  • 2025年8月文章一览
  • 深度学习:自定义数据集处理、数据增强与最优模型管理
  • 数据旁路(Data Bypassing)是什么?
  • 安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
  • 2025年数学建模国赛C题第二版本超详细解题思路
  • Qwen-agent 核心功能分析学习
  • 从零开始学无监督学习:图像混合与标签平滑技术详解,收藏不走丢
  • C++开发中的常用设计模式:深入解析与应用场景
  • javaweb基础第一天总结(HTML-CSS)
  • SpringBoot中 Gzip 压缩的两种开启方式:GeoJSON 瘦身实战
  • 基于网络原理——HTTP/HTTPS的Web服务搭建与核心技术实践
  • Ubuntu 使用 Samba 共享文件夹
  • 什么是CA根证书
  • Apache PDFBox 与 spire.pdf for java 使用记录
  • 软件架构师全方位工具图谱
  • Java全栈开发面试实战:从基础到高并发的深度解析
  • 【数学建模学习笔记】机器学习回归:决策树回归
  • 无人机信号防干扰技术难点分析
  • 企业白名单实现【使用拦截器】
  • 梯度爆炸问题:深度学习中的「链式核弹」与拆弹指南
  • 嵌入式学习 51单片机(3)
  • (自用)cmd常用命令自查文档
  • 大语言模型基础-Transformer之上下文
  • (计算机网络)TCP 粘包与拆包