鸿蒙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的传值流程。

