42 页面间传值方式

  1. 使用router进行页面跳转和传值:
    • 引入router模块:import router from '@ohos.router';
    • 跳转并传参:使用router.push方法,并指定目标页面的URL和要传递的参数。例如:

// 传递参数

router.push({

url: "pages/[页面命名]", // 打开新页面

params: {value: 'test'} // 给新页面传递一个对象,key为value

});

// 接受参数

private value: string = router.getParams()['value'];

  1. 使用emitter进行事件驱动的数据传递:
    • 引入emitter模块:import emitter from '@ohos.events.emitter';
    • 发送事件和数据:使用emitter.emit方法发送一个事件,并携带要传递的数据。
    • 订阅事件并接收数据:使用emitter.once或emitter.on方法订阅事件,并在事件触发时接收数据。
  1. 通过IntentParams进行页面跳转和传值(适用于使用Ability的页面):
    • 创建一个Intent对象,并设置目标页面的bundleName和abilityName。
    • 如果需要传递参数,使用intent.setParams(params)方法设置参数。
    • 调用context.startAbility(intent)启动目标页面。
  1. 使用LocalStorage或EventHub进行页面间数据共享:
    • LocalStorage:在页面间共享数据的一种常用方式,可以将数据存储在本地,并在需要时读取。
    • EventHub:一种事件总线机制,允许多个页面或组件订阅和发布事件,从而实现数据共享和通信。
  1. 使用startAbilityForResult进行页面跳转和结果回传:
    • 与startAbility类似,但增加了页面关闭后返回结果的功能。
    • 在启动新页面时,可以传递一个请求码和参数。
    • 在新页面关闭时,可以使用setResult方法设置返回结果,并通过请求码将结果回传给启动页面。
  1. 使用全局变量或单例模式:
    • 在某些情况下,可以通过定义全局变量或使用单例模式来实现页面间的数据共享。但这种方法需要谨慎使用,以避免数据污染和冲突。
  1. 使用URL参数或查询字符串:
    • 在页面跳转时,可以通过URL的查询字符串携带参数。但这种方法主要用于简单的数据传递,且存在URL长度限制和安全性问题。

在实际开发中,应根据具体需求和场景选择合适的页面传值方法。如果需要传递的数据量较大或需要复杂的交互逻辑,建议使用router、emitter或IntentParams等方法;如果只是简单的数据共享或页面跳转,可以使用LocalStorage、EventHub或全局变量等方法。

你可能感兴趣的:(HarmonyOS鸿蒙应用开发,javascript,开发语言,ecmascript,华为,前端)