HarmonyOS 通过AppStorage定义组件共享数据

我们实现组件间共享数据可以通过 AppStorage
他下面有两个函数可以实现这一功能
SetOrCreate和Set

AppStorage.SetOrCreate("dataMap",{
   
    name:"小猫猫"
})
AppStorage.Set("dataMap",{
   
    name:"小猫猫"
})

Set是 如果键值存在 他会覆盖 但是 如果键值不存在 就会赋值不上
SetOrCreate则是 如果没有就赋值 如果有了 就修改

所以这里我们肯定选择更安全的 SetOrCreate
然后 我们可以通过 AppStorage.Get(“键名”) 获取数据

这里 我们可以写一个案例
index组件代码如下

import router from '@ohos.router'
@Entry
@Component
struct Index {
   

  build() {
   
    Row() {
   
      Column() {
   
        Button("赋值").onClick(()=>{
   
          AppStorage.SetOrCreate("dataMap",{
   
            name:"小猫猫"
          })
          router.pushUrl({
   
            url: "pages/AppView",
            params: {
   
              name: "小猫猫",
              age: 20
            }
          })
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

我们设置了一个button按钮 点击时 用 AppStorage.SetOrCreate 存入一个键值对
键为 dataMap 值为一个对象 里面有一个name字段 值为 小猫猫

然后 跳转向 AppView

AppView 编写代码如下

@Entry
@Component
struct AppView {
   
  build() {
   
    Row() {
   
      Column(){
   
        Button("获取").onClick(()=>{
   
          let data:object = AppStorage.Get("dataMap")
          // @ts-ignore
          console.log(data.name);
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

这里 我们定义了一个data 类型为object 通过 AppStorage.Get 获取键为 dataMap的值
然后 用 console.log将对象的 name字段输出在控制台上

我们index组件 开启预览器 点击这里赋值 并且跳转向下一个界面
在这里插入图片描述
到了第二个界面 点击获取 控制台输出明显就是拿到了
在这里插入图片描述

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 06:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 06:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 06:18:01       87 阅读
  4. Python语言-面向对象

    2023-12-31 06:18:01       96 阅读

热门阅读

  1. 20231230 SQL基础50题打卡

    2023-12-31 06:18:01       49 阅读
  2. 算法每日一题:保龄球游戏的获胜者

    2023-12-31 06:18:01       52 阅读
  3. 【AI】人工智能爆发推进器之生成对抗网络

    2023-12-31 06:18:01       55 阅读
  4. flask web学习之flask与http(二)

    2023-12-31 06:18:01       50 阅读
  5. gitee上的vue大屏项目

    2023-12-31 06:18:01       59 阅读
  6. [NOIP2008 普及组] 传球游戏

    2023-12-31 06:18:01       44 阅读
  7. 腾讯云50G通用型SSD云硬盘够用吗?

    2023-12-31 06:18:01       73 阅读