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

ops/2025/2/18 19:51:53/

鸿蒙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.ppmy.cn/ops/158714.html

相关文章

反向代理ml

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当…

unity免费资源2025-2-14

https://assetstore.unity.com/packages/templates/systems/car-controller-with-shooting-capabilities-for-both-mobile-and-pc-246095 零元购码 QUEENDEVELOPER95 下周五再来哟&#xff0c;零元购码本周日24点结束

elementui: el-dialog的header设置样式不生效

问&#xff1a; el-dialog的header设置样式不生效 回答&#xff1a; 场景&#xff1a; <el-dialogv-model"dialogVisible"width"800px":before-close"beforeClose"append-to-body:close-on-click-modal"false"title"增加文…

人工智能泡沫效应

1.1 泡沫效应的经济学解释 泡沫效应是指资产价格持续超出其内在价值的现象&#xff0c;通常由过度投机、市场预期不合理等因素引起。在经济学中&#xff0c;泡沫的形成往往伴随着资产价格的快速上涨&#xff0c;而这种价格上涨并非基于基本面的支撑&#xff0c;而是由于投资者…

PicoShare实操:轻松实现远程文件共享无需公网IP与云服务器

文章目录 前言1. 本地安装Docker2. 本地部署PicoShare3. 如何使用PicoShare4. 公网远程访问本地 PicoShare4.1 内网穿透工具安装4.2 创建远程连接公网地址 5. 固定PicoShare公网地址 前言 在这个数字化飞速发展的时代&#xff0c;高效便捷的文件共享已经成为我们日常工作中不可…

【IoTDB 线上小课 11】为什么 DeepSeek 要选择开源?

新年新气象&#xff0c;【IoTDB 视频小课】第十一期全新来临&#xff01; 关于 IoTDB&#xff0c;关于物联网&#xff0c;关于时序数据库&#xff0c;关于开源... 一个问题重点&#xff0c;3-5 分钟&#xff0c;我们讲给你听&#xff1a; 开源“加成”再次展现&#xff01; 现在…

ruby 的安装

在51cto搜索的资料 ruby on rails的安装 http://developer.51cto.com/art/200906/129669.htm http://developer.51cto.com/art/200912/169391.htm http://developer.51cto.com/art/200908/147276.htm 史上最完整的ruby&#xff0c;rails环境架设配置&#xff08;Apachefast…

国家队出手!DeepSeek上线国家超算互联网平台!

目前,国家超算互联网平台已推出 DeepSeek – R1 模型的 1.5B、7B、8B、14B 版本,后续还会在近期更新 32B、70B 等版本。 DeepSeek太火爆了!在这个春节档,直接成了全民热议的话题。 DeepSeek也毫无悬念地干到了全球增速最快的AI应用。这几天,国内的云计算厂家都在支持Dee…