HarmonyOS 鸿蒙Next 怎样跨页面获取整个对象的值?

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

HarmonyOS 鸿蒙Next 怎样跨页面获取整个对象的值?

比如 我在viewmode里面定义了一个player

class Player{
id: string = ‘’
Name: string = ‘’}

然后在data文件夹里,定义了Player01,Player02

import …

let Player01= new Player()

Player01.id =‘A1’

Player01.Name=‘甲方’

let Player02= new Player()

Player02.id =‘A2’

Player02.Name=‘乙方’

现在我新建了一个组件,在主页调用这个组件时带入传参

主页代码:

Playerview({pid :‘Player01’})

问题:我怎么写能把Player01 里面的数据取过来?

import {Player} from ‘…’
let   play = new Player()
export  struct  Playerview{
pid :string = ‘’
// play = ...${this.pid}
build() {
Column(){…
}}}

标红的代码意思是想通过字符串拼接的方式把Player01所有值给play

这样就可以直接play.id ,play.Name 直接调用了,但是我不知道怎么写,请大神们赐教

5 回复

将你的默认数据导出,然后在需要的地方导入即可:

import { Player } from '../viewmodel/Player'

let Player01 = new Player()

Player01.id = ‘A1’

Player01.Name = ‘甲方’

let Player02 = new Player()

Player02.id = ‘A2’

Player02.Name = ‘乙方’ // 进行导出 export { Player01, Player02 }

导入:

import { Player01, Player02 } from ‘…/data/DefaultPlayer’

console.log(‘player1’,JSON.stringify(Player01)) console.log(‘player2’,JSON.stringify(Player02))>

感谢回复。 这个我都导了 ,我的意思是怎么根据入参不同而获取对应的数据 比如入参pid 是Player01的时候,我在Text里面展示Player01的数据, 入参pid 是Player02的时候,Text自动换成Player02的数据.

类似 ${this.pid} .id 这样的意思,但是这个语法不对

提供两个思路: 1.直接将整个对象传进你的Playerview组件; 2.在设置默认值的文件中写一个根据pid返回对应对象的方法,例如: export function getPlayerByPid(pid: string) { switch (pid) { case ‘player01’: return Player01 case ‘player02’: return Player02 default: return Player01 } } 然后在Playerview组件中调用这个方法就能拿到对应对象: Text(getPlayerByPid(this.pid).id)

感谢 ,最后我用第一种方法解决了,用prop接过来整个对象信息

在HarmonyOS鸿蒙系统中,跨页面获取整个对象的值通常涉及到数据传递机制。HarmonyOS提供了多种方式进行页面间数据通信,例如通过Intent、GlobalScope等。

一种常见且推荐的方法是使用Intent进行数据传递。你可以将要传递的对象序列化为JSON字符串(或其他可序列化的格式),然后在Intent中携带这个字符串。在目标页面中,通过Intent获取该字符串,再反序列化为原始对象。

需要注意的是,对象必须实现序列化接口(如Java中的SerializableParcelable),或者转换为可序列化的格式。此外,由于Intent的容量限制,传递大型对象可能不是最佳实践,应考虑使用全局数据管理(如GlobalScope)或数据库来持久化数据。

另一种方法是使用全局变量或单例模式,但这通常不推荐用于复杂应用,因为它可能导致状态管理和内存泄漏问题。

确保在传递敏感或重要数据时,采取适当的安全措施,如加密和验证。

鸿蒙Next零基础入门实战到高级实战已发布,可以先学学https://www.itying.com/goods-1204.html

回到顶部