鸿蒙Next中navigation从a到b再到c然后c到a如何传值

在鸿蒙Next中,使用navigation进行页面跳转时,如果路径是A→B→C→A,如何在不同页面间传递参数?比如从A传到B再传到C,最后从C返回到A时还需要携带数据,应该如何实现?希望能提供一个具体的代码示例。

2 回复

鸿蒙Next传值?简单!用router.pushUrl时带上params,像这样:

// A到B
router.pushUrl({ url: 'pages/B', params: { data: 'Hello B' } })
// B到C
router.pushUrl({ url: 'pages/C', params: { fromB: 'Hi C' } })
// C回A
router.pushUrl({ url: 'pages/A', params: { backData: '我胡汉三回来了' } })

接收用router.getParams(),记得判空!传值就像传纸条,别写错地址哦~ 😄

更多关于鸿蒙Next中navigation从a到b再到c然后c到a如何传值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,可以通过页面路由(router)实现页面间传值。假设页面A、B、C之间跳转,需要传递数据,以下是具体步骤和示例代码:

1. 从A到B传值

  • A页面:使用router.pushUrl()传递参数。
    import router from '[@ohos](/user/ohos).router';
    
    let params = { key1: 'value1', key2: 123 };
    router.pushUrl({
      url: 'pages/PageB',
      params: params
    });
    
  • B页面:通过router.getParams()接收参数。
    import router from '[@ohos](/user/ohos).router';
    
    let receivedParams = router.getParams() as Record<string, Object>;
    console.log(`收到参数: ${JSON.stringify(receivedParams)}`);
    

2. 从B到C传值

  • B页面:跳转时传递新参数或追加参数。
    let newParams = { key3: 'dataFromB' };
    router.pushUrl({
      url: 'pages/PageC',
      params: newParams
    });
    
  • C页面:接收并处理参数(方式同B页面)。

3. 从C直接返回A并传值

  • 方法:使用router.replaceUrl()router.back()传递参数,避免页面栈堆积。
    // 在C页面,返回A时传递数据
    router.replaceUrl({
      url: 'pages/PageA',
      params: { key4: 'valueFromC' }
    });
    
  • A页面:在onPageShow()生命周期中接收返回参数。
    onPageShow() {
      let params = router.getParams() as Record<string, Object>;
      if (params) {
        console.log(`从C返回的数据: ${JSON.stringify(params)}`);
      }
    }
    

注意事项:

  • 使用replaceUrl会替换当前页面(C被销毁),直接跳回A;若需保留B和C,可用router.back()并配合自定义事件或全局状态管理。
  • 参数类型需为可序列化对象(如字符串、数字等)。

通过以上方法,可实现A→B→C→A的传值流程。

回到顶部