HarmonyOS 鸿蒙Next OpenHarmony应用开发中的页面数据跳转,正常使用什么方式存取数据?

HarmonyOS 鸿蒙Next OpenHarmony应用开发中的页面数据跳转,正常使用什么方式存取数据? 如题,OpenHarmony应用开发中的页面数据跳转,正常使用什么方式存取数据?

目前使用的是 HashMap;这个方式有个缺点,就是需要定时、定点的去清理具体的key;

其他的数据容器存储方式也是类似情况;或者就是用本地数据库,但是作用域只在应用页面跳转的数据使用本地数据库又没有必要;

不知道有没有其他好点的方式做页面之间的数据跳转。


更多关于HarmonyOS 鸿蒙Next OpenHarmony应用开发中的页面数据跳转,正常使用什么方式存取数据?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

你好,如果只是在页面跳转时传输数据的话,可以考虑一些两种便捷的数据传输方式:

  1. 使用Navigator组件跳转页面时,设置其params属性进行数据绑定,代码如下:
Navigator({
  target: 'pages/FoodDetail'
}) {
  Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
    Text(this.foodItem.name)
      .fontSize(14)
      .flexGrow(1)
    Text(this.foodItem.calories + ' kcal')
      .fontSize(14)
  }
  .height(64)
}
.params({ foodId: this.foodItem })
.margin({ right: 24, left: 32 })
  1. 使用 ‘@ohos.router’ 的 API 跳转页面携带参数,代码参考如下:
Column() {
  Row() {
    Image(this.foodItem.image)
      .objectFit(ImageFit.Contain)
      .height(152)
      .width('100%')
  }.backgroundColor('#FFf1f3f5')
}
.height(184)
.width('100%')
.onClick(() => {
  router.push({ url: 'pages/FoodDetail', params: { foodId: this.foodItem } })
})

以上两种方式在目标页面均使用以下方式接收数据:

this.foodItem = router.getParams()["foodId"];

具体案例参考:https://gitee.com/openharmony/applications_app_samples/tree/master/ETSUI/DefiningPageLayoutAndConnection

更多关于HarmonyOS 鸿蒙Next OpenHarmony应用开发中的页面数据跳转,正常使用什么方式存取数据?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个之前也用过,不过路由api的方式带参数很不方便,A-B-C,A页面到C页面的数据每次都需要在路由参数里配置数据参数,不太适用;,

LocalStorage呢,这个是应用程序中的存储单元,生命周期跟随其关联的Ability,Ability中的所有页面可以直取直用,数据也不需要手动清理,关闭Ability即销毁。

参考文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ui-ts-local-storage.md

谢谢,不过storage方式,官网提示:从API Version 9开始,该接口不再维护;

在HarmonyOS(鸿蒙)Next OpenHarmony应用开发中,页面数据跳转时,通常使用以下几种方式来存取数据:

  1. 全局状态管理:利用全局状态管理工具(如ArkUI中的@Env@State注解配合@Observable对象)来管理应用中的共享数据。这种方式适用于需要在多个页面间共享数据的情况。

  2. 页面参数传递:在页面跳转时,通过路由参数将数据传递给目标页面。OpenHarmony提供了路由API,允许在启动新页面时附带参数。目标页面在创建时可以从路由参数中解析出所需数据。

  3. 本地存储:对于需要在用户会话间持久保存的数据,可以使用本地存储机制(如SQLite数据库、文件存储或Key-Value存储)来存取数据。这种方式适用于用户数据、配置信息等需要长期保存的场景。

  4. 服务通信:通过服务(Service)进行跨页面数据通信。服务可以在后台运行,不同页面可以通过绑定服务来获取或更新数据。这种方式适用于数据更新频繁且需要实时同步的场景。

在OpenHarmony应用中,开发者应根据具体需求选择合适的数据存取方式。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部