HarmonyOS 鸿蒙Next 页面返回传参
HarmonyOS 鸿蒙Next 页面返回传参 从B页面返回A页面,使用router方式如何传参?使用Navigation如何传参?
官方建议使用Navigation跳转了;
Navigation方式如下
A画面
let params = xxxxxx;
this.pageInfos.pushPath({
name:'B',
param: params, // 传给B画面的参数
onPop: (popInfo: PopInfo) => {
let str: string = JSON.stringify(popInfo.result);
}
});
B画面返回
let rsp = xxxxxx; // B画面返回A时,带回的数据
this.pageInfos.pop(rsp , false);
更多关于HarmonyOS 鸿蒙Next 页面返回传参的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
router返回传参使用router.back,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-router-V5#routerback
A页面使用 router.getParams() 获取
Navigation的页面间,通过NavPathInfo对象中的params属性,实现从发起页到目标页的数据传递;通过onPop回调参数,实现处理目标页面的返回。
Step1:构建NavPathInfo对象,输入需要传递给目标页面的参数。
params参数:将需要传递的数据封装起来进行传递,无法传递对象里面的函数。具体的支持参数可以参考指南 onPop参数:目标页面触发pop时的返回,在回调中通过PopInfo.info.param获取到返回的对象。
// 发起页 mainPage
let loginParam : LoginParam = new LoginParam()
// 构建pathInfo对象
let pathInfo : NavPathInfo = new NavPathInfo('loginPage', loginParam
, (popInfo: PopInfo) => {
let loginParam : LoginParam = popInfo.info.param as LoginParam;
...
})
// 讲参数传递到目标页
this.pageStack.pushDestination(pathInfo, true);
Step2:目标页通过“NavPathStack.getParamByIndex(0)”获取到发起页传递过来的参数
@Component
export struct loginPageView {
@Consume('pageInfo') pageStack : NavPathStack;
aboutToAppear(): void {
this.loginParam = this.pageStack.getParamByIndex(0) as LoginParam;
}
...
}
Step3:目标页通过NavPathStack.pop方法返回起始页,其result参数用来传递需要返回给起始页的对象
@Component
export struct loginPageView {
@Consume('pageInfo') pageStack : NavPathStack;
// 页面构建的对象
private loginParam! : LoginParam;
...
build() {
NavDestination(){
...
Button('login').onClick(ent => {
// 将对象返回给起始页
this.pageStack.pop(this.loginParam, true)
})
}
}
}
在HarmonyOS(鸿蒙)系统中,页面返回传参通常涉及在不同页面或组件间传递数据。鸿蒙系统提供了多种方式来实现这一功能,以下是一些核心方法:
-
Intent传递数据: 类似于Android,鸿蒙使用Intent对象来携带数据。在启动目标页面时,可以通过putExtra方法将参数添加到Intent中。在目标页面,通过getIntent()方法获取Intent,再使用对应的get方法提取参数。
-
全局变量或数据管理: 对于需要在多个页面间频繁共享的数据,可以考虑使用全局变量或数据管理器。鸿蒙支持创建单例模式的数据管理类,用于存储和访问共享数据。
-
服务(Service)通信: 如果数据传递涉及后台服务,可以通过服务通信机制(如AIDL或Messenger)来实现数据传递。这种方式适用于复杂的数据交互场景。
-
事件总线(EventBus): 虽然鸿蒙原生未直接提供EventBus机制,但开发者可以通过第三方库或自行实现事件发布/订阅模式,以实现页面间的数据传递和解耦。
请注意,具体实现方式需根据应用的实际需求和架构设计来选择。如果在使用上述方法时遇到具体问题,建议检查参数类型匹配、Intent的正确构建与解析等方面。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,