0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

harmony OS NEXT-UIAbility内状态-LocalStorage详细介绍

程奕红 来源:jf_34770892 作者:jf_34770892 2025-03-22 15:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# 鸿蒙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. 准备共享数据

```ts
const data:Record = {
'uname':'公孙离',
'age':'18'
}

```

2. 创建一个storage实例

```ts
const storage = new LocalStorage(data)
```

3. 使用共享数据库

```ts
1.@Entry(storage)
//表示我要从共享数据库中取出uname字段 具体需要取出什么字段根据自己需求即可
@LocalStorageLink('uname')
//给取出的字段取一个别名,需要赋初始值。因为可能拿不到
message: string = ''
```

4. 具体代码实现

```ts
const data:Record = {
'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](https://i-blog.csdnimg.cn/img_convert/537a479a23bb8f24ff1538c9aaeb76e0.gif)

##

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

### 1.3.1 多个页面的使用方法

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

### 1.3.2 案例演示

1. 准备数据

```ts
const data:Record = {
'uname':'公孙离',
'age':'18',
}
const storage = new LocalStorage(data)
```

2. 创建storage实例,将storage传递给页面

```ts
1.const storage = new LocalStorage(data)
2. windowStage.loadContent('pages/10/TestLocalStorage03',storage);
```

3. 接收数据

```ts
const storage = LocalStorage.getShared()
//其他步骤同单个页面传输吗,这里就不再叙述
```

4. 完整代码展示

* UIAbility内代码

```ts
onWindowStageCreate(windowStage: window.WindowStage): void {
const data:Record = {
'uname':'公孙离',
'age':'18',
}
const storage = new LocalStorage(data)
// //只要是当前windowStage内的界面,都可以共享这份数据
windowStage.loadContent('pages/10/TestLocalStorage03',storage);
}
```

* 页面1

```ts
// const data:Record = {
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

```ts
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%')
}
}
```


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4940

    浏览量

    90402
  • 鸿蒙
    +关注

    关注

    60

    文章

    3071

    浏览量

    46274
  • Harmony
    +关注

    关注

    0

    文章

    109

    浏览量

    3643
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    东芝开发出可详细阐明磁头自旋扭矩振荡元件振荡状态的评估方法

    东芝集团(“东芝”)近日宣布,针对有望进一步实现硬盘大容量化的下一代技术——共振型微波辅助磁记录(MAS-MAMR),东芝成功开发出可详细阐明磁头“自旋扭矩振荡元件”(以下简称STO)振荡状态
    的头像 发表于 02-12 15:13 832次阅读
    东芝开发出可<b class='flag-5'>详细</b>阐明磁头<b class='flag-5'>内</b>自旋扭矩振荡元件振荡<b class='flag-5'>状态</b>的评估方法

    【HarmonyOS 5】鸿蒙中的UIAbility详解(二)

    【HarmonyOS 5】鸿蒙中的UIAbility详解(二) ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 今天我们继续深入讲解
    的头像 发表于 07-11 18:17 1091次阅读
    【HarmonyOS 5】鸿蒙中的<b class='flag-5'>UIAbility</b>详解(二)

    【汇思博SEEK100开发板试用体验】07 天气app--用户偏好设置+加载状态等细节完善

    1 前言 本次实验将上次没完成的设置页面做一个完善,然后使用preferences用户首选项保存host 和 apikey,然后完善一点细节,包括加载状态显示、启动应用自动获取数据、Toast提示
    发表于 07-09 17:42

    harmony-utils之CacheUtil,缓存工具类

    harmony-utils之CacheUtil,缓存工具类
    的头像 发表于 07-04 16:36 667次阅读

    harmony-utils之CharUtil,字符工具类

    harmony-utils之CharUtil,字符工具类
    的头像 发表于 07-04 16:34 648次阅读

    harmony-utils之CrashUtil,异常相关工具类

    harmony-utils之CrashUtil,异常相关工具类
    的头像 发表于 07-04 16:33 745次阅读

    harmony-utils之DeviceUtil,设备相关工具类

    harmony-utils之DeviceUtil,设备相关工具类
    的头像 发表于 07-03 18:27 832次阅读

    harmony-utils之DisplayUtil,屏幕相关工具类

    harmony-utils之DisplayUtil,屏幕相关工具类
    的头像 发表于 07-03 18:26 651次阅读

    harmony-utils之EmitterUtil,Emitter工具类

    harmony-utils之EmitterUtil,Emitter工具类
    的头像 发表于 07-03 18:24 593次阅读

    harmony-utils之FileUtil,文件相关工具类

    harmony-utils之FileUtil,文件相关工具类
    的头像 发表于 07-03 18:23 752次阅读

    harmony-utils之FormatUtil,格式化工具类

    harmony-utils之FormatUtil,格式化工具类
    的头像 发表于 07-03 18:22 735次阅读

    harmony-utils之ImageUtil,图片相关工具类

    harmony-utils之ImageUtil,图片相关工具类
    的头像 发表于 07-03 18:22 1140次阅读

    【HarmonyOS 5】鸿蒙中的UIAbility详解(三)

    【HarmonyOS 5】鸿蒙中的UIAbility详解(三) ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 本文是鸿蒙中的UIAbility
    的头像 发表于 06-14 22:32 952次阅读

    鸿蒙Next实现瀑布流布局

    的应用窗口宽度并注册回调函数监听窗口尺寸变化。将窗口尺寸的长度单位由 px 换算为 vp 后,即可基于前文中介绍的规则得到当前断点值,此时可以使用状态变量记录当前的断点值方便后续
    发表于 06-10 14:17

    PageAbility切换为UIAbility的方法

    UIAbility。 将FA应用中PageAbility的代码迁移到新创建的UIAbility中。FA应用中PageAbility和Stage应用中的UIAbility生命周期基本一致,两者的生命周期
    发表于 06-05 06:07