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

鸿蒙: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.dtcms.com/a/366816.html

相关文章:

  • 泛型的通配符
  • axios请求缓存与重复拦截:“相同请求未完成时,不发起新请求”
  • TDengine TIMETRUNCATE 函数用户使用手册
  • 野火STM32Modbus主机读取寄存器/线圈失败(三)-尝试将存贮事件的地方改成数组(非必要解决方案)(附源码)
  • 腾讯云国际代理:如何在腾讯云GPU服务器上部署私有化大模型?附GPU简介
  • SQLmap 完整使用指南:环境搭建 + 命令详解 + 实操案例
  • 打开 solidworks当前文件 所在的文件夹 python pywin32
  • Effective Python 第10条 - 用赋值表达式减少重复代码
  • 上位机知识篇---conda run
  • KingbaseES一体化架构与多层防护体系如何保障企业级数据库的持续稳定与弹性扩展
  • 关于在自然语言处理深层语义分析中引入公理化体系的可行性、挑战与前沿展望
  • 谁才是企业级开源平台的优选?OpenCSG与Dify、Coze、Langflow、Ollama 的差异化之路
  • 深度学习——ResNet 卷积神经网络
  • 高并发商城 商品为了防止超卖,都做了哪些努力?
  • 2025国赛C题保姆级教程思路分析 NIPT 的时点选择与胎儿的异常判定
  • Spring Cloud Alibaba快速入门01
  • C语言结构体:轻松管理球员数据
  • SpringMVC的异常处理和拦截器
  • 【C语言】深入理解指针(4)
  • nextcyber——常见应用攻击
  • 一个老工程师的“新生”:良策金宝AI,让我重新爱上设计
  • [光学原理与应用-389]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 1064nm种子光准直透镜
  • 2025年经管领域专业资格认证发展路径分析
  • 数据结构 之 【模拟实现哈希表】
  • Python 值传递 (Pass by Value) 和引用传递 (Pass by Reference)
  • 电池预测 | 第36讲 Matlab基于CNN-BiGRU-Attention的锂电池剩余寿命预测
  • JVM 运行时数据区域
  • 开源本地LLM推理引擎(Cortex AI)
  • 【PZ-AU15P】璞致fpga开发板 Aritx UltraScalePlus PZ-AU15P 核心板与开发板用户手册
  • ZooKeeper核心ZAB选举核心逻辑(大白话版)