HarmonyOS 鸿蒙Next 通过页面路由实现多页面间跳转 页面返回时无法判断来源页面

HarmonyOS 鸿蒙Next 通过页面路由实现多页面间跳转 页面返回时无法判断来源页面

A页面可以打开B,C页面,然后B,C页面通过Back返回params给A页面,现在在A页面的onPageShow中如果通过返回的Param区分页面是从B返回,还是从C返回的。或者启动对应页面时,能否支持传入回调。档页面被出栈时,除非对应回调。

2 回复
您如果是想判断从那个页面返回,就通过params参数就可以了。

第一个页面:

import { router } from '@kit.ArkUI';

@Entry

@Component

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’;

@Entry

@Component

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系统中,通过页面路由实现多页面间跳转时,若在页面返回时无法判断来源页面,可以采用以下方法:

  1. 传递参数标识:在跳转页面时,通过路由携带一个来源页面的唯一标识(如页面ID或自定义的key-value对)。接收页面在onPageStarted或onPageArrived时读取该参数,并保存在本地变量中。当返回时,通过该变量判断来源页面。

  2. 使用全局状态管理:利用HarmonyOS提供的数据管理能力,如GlobalContext或DataStore,存储当前页面的来源信息。在跳转和返回时,通过全局状态管理器读取和更新来源页面信息。

  3. 页面栈管理:维护一个自定义的页面栈,记录页面跳转的顺序和来源。在每次跳转时,将当前页面和来源页面信息入栈;在返回时,出栈并判断来源页面。

  4. 生命周期回调:利用页面的生命周期回调方法,如onPageBackPressing,在该方法中判断当前页面的前一个页面,从而确定来源页面。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部