HarmonyOS 鸿蒙Next 动态路由如何传递localstorge到目标页面

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 动态路由如何传递localstorge到目标页面

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-navigation-navigation-V5#跨包动态路由

这个动态路由 如何传递当前页面的LocalStorage到目标页面


更多关于HarmonyOS 鸿蒙Next 动态路由如何传递localstorge到目标页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

LocalStorage是ArkTS为构建页面级别状态变量提供存储的内存内“数据库”。LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例,如果路由跳转的页面 没有被@Entry修饰,所有页面共享一个LocalStorage, 参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-localstorage-V13

AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。如果路由跳转的页面被Entry修改,可以使用AppStorage代替LocalStorage

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-appstorage-V13

如何在Navigation中使用LocalStorage:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-326-V5

在下面的用例中,Index页面中的propA通过getShared()方法获取到共享的LocalStorage实例。点击Button跳转到Page页面,点击Change propA改变propA的值,back回Index页面后,页面中propA的值也同步修改。

// index.ets

import { router } from '@kit.ArkUI';

// 通过getShared接口获取stage共享的LocalStorage实例

let storage = LocalStorage.getShared()

[@Entry](/user/Entry)(storage)

@Component

struct Index {

  // can access LocalStorage instance using 

  // @LocalStorageLink/Prop decorated variables

  @LocalStorageLink('PropA') prop

number = 1;

  build() {

    Row() {

      Column() {

        Text(`${this.propA}`)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

        Button("To Page")

          .onClick(() => {

            router.pushUrl({

              url: 'pages/Page'

            })

          })

      }

      .width('100%')

    }

    .height('100%')

  }

}

// Page.ets

import { router } from '@kit.ArkUI';

let storage = LocalStorage.getShared()

[@Entry](/user/Entry)(storage)

@Component

struct Page {

  @LocalStorageLink('PropA') prop

number = 2;

  build() {

    Row() {

      Column() {

        Text(`${this.propA}`)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

        Button("Change propA")

          .onClick(() => {

            this.propA = 100;

          })

        Button("Back Index")

          .onClick(() => {

            router.back()

          })

      }

      .width('100%')

    }

  }

}

更多关于HarmonyOS 鸿蒙Next 动态路由如何传递localstorge到目标页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,动态路由传递localStorage到目标页面通常涉及使用全局状态管理或路由参数传递机制。由于localStorage本身是一个持久化存储机制,直接通过路由传递并不合适,但可以通过以下方式实现类似功能:

  1. 全局状态管理:利用HarmonyOS提供的数据管理API(如DataAbility或全局变量),在应用内创建一个全局状态管理器。在源页面将需要传递的数据保存到全局状态,然后在目标页面从全局状态管理器中获取。

  2. 路由参数:如果数据量不大且不需要持久化,可以将数据作为路由参数传递。在源页面构建路由时,将数据作为参数附加到路由URI中,目标页面在接收到路由时解析URI获取参数。

  3. 服务传递:通过服务(Service)进行数据传输。源页面启动一个服务,将数据传递给服务,目标页面绑定到该服务并接收数据。

示例代码(简化):

// 源页面
router.push({
    uri: 'page://targetPage',
    params: { key: 'value' } // 传递的数据
});

// 目标页面
onInit(intent) {
    let params = intent.getParams();
    let value = params.key; // 获取传递的数据
}

注意:上述代码为示例性质,具体实现需根据HarmonyOS API文档调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!