HarmonyOS 鸿蒙Next 通过页面路由实现多页面间跳转 页面返回时无法判断来源页面
HarmonyOS 鸿蒙Next 通过页面路由实现多页面间跳转 页面返回时无法判断来源页面
第一个页面:
import { router } from '@kit.ArkUI';
struct Index {
onPageShow() {
let params = router.getParams();
console.log(JSON.stringify(params));
}
build() {
Column(){
Button(‘到IndexTwo’)
.onClick(()=>{
router.pushUrl({
url:‘pages/IndexTwo’
})
})
}
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
第二个页面:
import { router } from ‘@kit.ArkUI’;
struct IndexTwo {
build() {
Row() {
Column() {
Button(‘返回’)
.onClick(()=>{
router.back({
url: ‘pages/Index’,
params: {
info: ‘来自第二页’
}
});
})
}
.width(‘100%’)
}
.height(‘100%’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
目前的话还是基本通过router.back携带返回参数,router.getParams() 通过特定参数的方式来判断,暂时没有其他的方案。
当前router.pushUrl里的params参数是不能传递方法的。
更多关于HarmonyOS 鸿蒙Next 通过页面路由实现多页面间跳转 页面返回时无法判断来源页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,通过页面路由实现多页面间跳转时,若在页面返回时无法判断来源页面,可以采用以下方法:
-
传递参数标识:在跳转页面时,通过路由携带一个来源页面的唯一标识(如页面ID或自定义的key-value对)。接收页面在onPageStarted或onPageArrived时读取该参数,并保存在本地变量中。当返回时,通过该变量判断来源页面。
-
使用全局状态管理:利用HarmonyOS提供的数据管理能力,如GlobalContext或DataStore,存储当前页面的来源信息。在跳转和返回时,通过全局状态管理器读取和更新来源页面信息。
-
页面栈管理:维护一个自定义的页面栈,记录页面跳转的顺序和来源。在每次跳转时,将当前页面和来源页面信息入栈;在返回时,出栈并判断来源页面。
-
生命周期回调:利用页面的生命周期回调方法,如onPageBackPressing,在该方法中判断当前页面的前一个页面,从而确定来源页面。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html