鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍

鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍

1.1 Localstorage的概念

LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例,LocalStorage也可以在UIAbility内,页面间共享状态

1.2 LocalStorage单个页面的使用方法

1.2.1 单个页面的数据状态存储方法

  1. 准备一个共享数据,键值对的方式存储

  2. 创建LocalStorage实例:const storage = new LocalStorage({key:value})

  3. 单向 @LocalStorageProp(‘user’)组件内可变

  4. 双向 #LocalStorageLink(‘user’)全局均可变

1.2.2 案例演示

  1. 准备共享数据
const data:Record<string,string> = {'uname':'公孙离','age':'18'
}
  1. 创建一个storage实例
const storage = new LocalStorage(data)
  1. 使用共享数据库
1.@Entry(storage)
//表示我要从共享数据库中取出uname字段   具体需要取出什么字段根据自己需求即可@LocalStorageLink('uname')//给取出的字段取一个别名,需要赋初始值。因为可能拿不到message: string = ''
  1. 具体代码实现
const data:Record<string,string> = {'uname':'公孙离','age':'18'
}
const storage = new LocalStorage(data)
@Entry(storage)
@Component
struct TestLocalStorage03 {@LocalStorageLink('uname')message:string = ''build() {Column() {Text(this.message)Button('改变父组件的信息').onClick(()=>{this.message = '孙尚香'})child001()}.height('100%').width('100%')}
}@Component
struct child001 {@LocalStorageLink('uname')message:string = ''build() {Column(){Text('-------------------------------------------')Text(this.message)Button('改变子组件的状态').onClick(()=>{this.message = '西施'})}}
}

1.2.3 效果展示

img

1.3 LocalStorage多个页面共享UIAbility的使用方法

1.3.1 多个页面的使用方法

  1. 依旧是准备共享数据,放置在设置当前应用的加载页面(UIAbility共享),只要是当前windowstage内的界面,都可以共享这份数据
  2. 在设置应用的加载页面创建storage实例
  3. 通过LocalStorage里面的方法getShared获取数据

1.3.2 案例演示

  1. 准备数据
  const data:Record<string,string> = {'uname':'公孙离','age':'18',}const storage = new LocalStorage(data)
  1. 创建storage实例,将storage传递给页面
    1.const storage = new LocalStorage(data)2.  windowStage.loadContent('pages/10/TestLocalStorage03',storage);
  1. 接收数据
const storage = LocalStorage.getShared()
//其他步骤同单个页面传输吗,这里就不再叙述
  1. 完整代码展示
  • UIAbility内代码
  onWindowStageCreate(windowStage: window.WindowStage): void {const data:Record<string,string> = {'uname':'公孙离','age':'18',}const storage = new LocalStorage(data)// //只要是当前windowStage内的界面,都可以共享这份数据windowStage.loadContent('pages/10/TestLocalStorage03',storage);}
  • 页面1
// const data:Record<string,string> = {
import { router } from '@kit.ArkUI'//   'uname':'公孙离',
//   'age':'18'
// }
const storage = LocalStorage.getShared()@Entry(storage)
@Component
struct TestLocalStorage03 {@LocalStorageLink('uname')message: string = ''build() {Column() {Text(this.message)Button('改变父组件的信息').onClick(() => {this.message = '孙尚香'})child001()}.height('100%').width('100%')}
}@Component
struct child001 {@LocalStorageLink('uname')message: string = ''build() {Column() {Text('-------------------------------------------')Text(this.message)Button('改变子组件的状态').onClick(() => {this.message = '西施'})Button('切换页面').onClick(() => {router.pushUrl({url: 'pages/10/TextLocalStorage2'})})}}
}
  • 页面2
import { router } from '@kit.ArkUI'const storage = LocalStorage.getShared()
@Entry(storage)
@Component
struct TextLocalStorage2 {@LocalStorageLink('uname')message: string = ''build() {Column() {Text(this.message)Button('改变信息').onClick(()=>{this.message = '刘备'})Button('back').onClick(()=>{router.back()})}.height('100%').width('100%')}
}

1.3.3 效果展示

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18068.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SiliconCloud 支持deepseek,送2000w token

SiliconCloud SiliconCloud 邀请奖励持续进行&#xff0c;2000 万 Tokens 送不停&#xff01; 邀请好友赚 2000 万 Tokens&#xff1a;每成功邀请一位新用户通过手机号码注册&#xff0c;您将获得 2000 万 Tokens&#xff1b;注册即送 2000 万 Tokens&#xff1a;受邀好友作为…

ubuntu服务器部署

关闭欢迎消息 服务器安装好 ubuntu 系统后&#xff0c;进行终端登录&#xff0c;会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令&#xff0c;再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名&#xff0c;保…

排序算法——人无完人

没有哪一个排序方法是完美的&#xff0c;对于不同的需求&#xff0c;排序算法各有自己的优势。金无足赤&#xff0c;人无完人。 &#xff08;这里不再重复所讲排序算法的实现&#xff0c;网上已有很多好的教学。&#xff09; 排序方法除了依靠时间复杂度和空间复杂度来区分&am…

3D模型可视化引擎HOOPS Visualize在桌面端的支持有哪些特点?

在数字化转型日益加速的今天&#xff0c;工业和工程领域的专业人员面临着越来越复杂的设计和数据分析需求。3D模型可视化技术应运而生&#xff0c;并成为了加速设计和制造流程的关键工具。作为业界领先的3D可视化引擎之一&#xff0c;HOOPS Visualize提供了一系列强大的桌面端支…

傅里叶变换推导

基本模型 假设在二维直角坐标系中&#xff0c;可以用相互垂直的基向量和表示&#xff1a; 假设&#xff1a; 假设在上的投影为&#xff0c;那么&#xff1a; 所以&#xff1a; 用公式表达&#xff1a; 但是在实际中&#xff0c;基向量和不一定长度都是1&#xff0c;重新推导一…

数据科学之数据管理|python for office

现如今&#xff0c;随着计算机的逐渐普及。现代化办公成为每个职场人必备的技能&#xff0c;本文档就来介绍&#xff0c;如何使用pytohn实现自动化办公。然而&#xff0c;自动化办公有时并不能减少工作量。自动化办公更适合批量处理文档。单一的文件&#xff0c;小金不建议使用…

【前端框架】Vue3 中 `setup` 函数的作用和使用方式

在 Vue 3 里&#xff0c;setup 函数是组合式 API 的核心入口&#xff0c;为开发者提供了更灵活、高效的组件逻辑组织方式。以下为你详细介绍其作用和使用方式&#xff1a; 作用 1. 初始化响应式数据 在 setup 函数中&#xff0c;我们能够使用 ref 和 reactive 等函数来创建响…

MySQL无法连接到本地localhost的解决办法2024.11.8

问题描述&#xff1a;我的MySQL可以远程连接服务器&#xff0c;但无法连接自己的localhost。 错误提示&#xff1a; 2003 - Cant connet to MySQL server on localhost(10061 "Unknown error")查找问题原因&#xff1a; 1. 检查环境变量是否正确&#xff1a;发现没…

STM32HAL库快速入门教程——常用外设学习(2)

目录 一、STM32HAL库开发&#xff08;8&#xff09;——CubeMX配置DMA 1.1、什么是DMA&#xff1f; 1.2、内存内存之间的传输&#xff08;单次&#xff09; ​编辑 1.3、内存外设之间的传输&#xff08;ADC&#xff09; 二、STM32HAL库开发&#xff08;9&#xff09;——…

LabVIEW与小众设备集成

在LabVIEW开发中&#xff0c;当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求&#xff0c;而厂家虽然提供了配套软件&#xff0c;但由于系统中还需要控制其他设备且不能使用厂商的软件时&#xff0c;必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…

PyQt组态软件 拖拽设计界面测试

PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件&#xff0c;目前实现的功能如下&#xff1a; 支持拖入控件&#xff0c;鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器&#xff0c;修改当前选中控件的属性 拖动框选控件&#xff0c;点选控件 控…

AI如何与DevOps集成,提升软件质量效能

随着技术的不断演进&#xff0c;DevOps和AI的融合成为推动软件开发质量提升的重要力量。传统的DevOps已经为软件交付速度和可靠性打下了坚实的基础&#xff0c;而随着AI技术的加入&#xff0c;DevOps流程不仅能提升效率&#xff0c;还能在质量保障、缺陷预测、自动化测试等方面…

Mac配置Flutter开发环境

1、访问 Flutter 官网&#xff0c;下载安装Flutter SDK 2、将 Flutter 添加到 PATH 环境变量 找到用户文件夹中的.zshrc隐藏文件&#xff08;隐藏文件显示方式&#xff1a;shiftcommand.&#xff09;&#xff0c;打开.zshrc文件&#xff0c;添加Flutter SDK路径&#xff0c;注…

Linux系统使用ollama本地安装部署DeepSeekR1 + open-webui

Linux系统使用ollama本地安装部署DeepSeekR1 open-webui 1. 首先&#xff0c;下载安装ollama #下载安装脚本并执行 curl -fsSL https://ollama.com/install.sh | sh #安装完成后查看ollama版本 ollama --version2. 使用ollama下载deepseek #不同的参数规格对硬件有不同的要…

【Kubernetes】常用命令全解析:从入门到实战(中)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是k8s 2、K8s的核心功能 二、资…

[ComfyUI]腾讯开源黑科技Sonic,插件更新,更加可控啦

一、Sonic更新介绍 大家还记得我前分享过腾讯开源的Sonic这个项目吧&#xff0c;通过照片声音就可以生成非常不错的数字人开口说话的视频。 当时我就挺满意的&#xff0c;不过那时候输出还只能输出正方形的视频&#xff0c;这点就让我留有遗憾。 今天我再去翻作者的项目官网…

设计模式Python版 命令模式(上)

文章目录 前言一、命令模式二、命令模式示例 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&#xff1a;关注类和对象之间的组合&…

微服技术栈之Spring could gateway

0 前言 之前使用到的gateway技术栈 &#xff0c;光靠记忆可能没有记住那么多的&#xff0c;gateway当今比较主流的网关技术栈了。说到gateway&#xff0c;不得不提及Zuul&#xff0c;而Zuul已经被淘汰了。 1 概述 Could全家桶有个很重要的组件就是网关&#xff0c;在1.X版本…

上课啦 | 2月17日软考高项【5月备考班】

相关文章推荐 福利&#xff1a;【软考-电子书】赠送 | 信息系统项目管理师教程 软考证书以考代评评定的职称是什么&#xff1f;聘任步骤&#xff1f; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 软考 高 项 课程&#xff1a;2月17日开课 | 软考-高…

小米 R3G 路由器刷机教程(Pandavan)

小米 R3G 路由器刷机教程&#xff08;Pandavan&#xff09; 一、前言 小米 R3G 路由器以其高性价比和稳定的性能备受用户青睐。然而&#xff0c;原厂固件的功能相对有限&#xff0c;难以满足高级用户的个性化需求。刷机不仅可以解锁路由器的潜能&#xff0c;还能通过第三方固…