HarmonyOS 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo
HarmonyOS 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo
可以参考以下demo页面间参数传递:
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:目标页面获取发起页参数有两种方式:
方式一:目标页在NavDestination的onReady函数中获取传递过来的参数(推荐使用此方式)
build() {
NavDestination(){
...
}.hideTitleBar(true)
.onReady(cxt => {
this.loginParam = cxt.pathInfo.param as LoginParam;
...
})
}
复制
方式二:目标页通过“NavPathStack.getParamByIndex(this.pageStack.getAllPathName().length - 1)”获取到发起页传递过来的参数
@Component
export struct loginPageView {
@Consume('pageInfo') pageStack : NavPathStack;
aboutToAppear(): void {
this.loginParam = this.pageStack.getParamByIndex(this.pageStack.getAllPathName().length - 1) 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 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next navigation支持通过URL路由跳转携带参数信息打开相应页面。在鸿蒙系统中,可以使用Intent和URI机制来实现这一功能。
Demo示例如下:
-
定义路由规则: 在
config.json
中定义路由规则,假设我们要导航到一个名为DetailPage
的页面,并携带参数id
。{ "module": { "package": "com.example.myapp", "abilities": [ { "name": "com.example.myapp.DetailPageAbility", "label": "Detail Page", "launchType": "singleTop", "visible": true, "uriPatterns": [ "/detail?id={id}" ] } ] } }
-
页面跳转: 在代码中构建Intent,并附带参数进行页面跳转。
let intent = new ohos.intent.Intent(); intent.setElement(new ohos.aafwk.content.ElementName('com.example.myapp', 'com.example.myapp.DetailPageAbility')); intent.setParam("id", "12345"); intent.setUri("file:///detail?id=12345"); this.context.startAbility(intent);
-
接收参数: 在
DetailPageAbility
的onStart
方法中获取参数。onStart(intent) { let id = intent.getParam("id"); console.log("Received ID: " + id); }
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html