鸿蒙Next ArkTS中router.getParams()如何正确取值
在鸿蒙Next开发中,使用ArkTS的router.getParams()获取路由参数时遇到问题。
通过router.pushUrl跳转页面后,在目标页面调用router.getParams()获取到的参数始终为undefined。
已确认传参格式正确:router.pushUrl({url: 'pages/Detail', params: {id: 123}}),但接收端仍无法取值。
请问是否需要额外配置路由?或是存在其他注意事项?
(开发环境:API 9+,DevEco Studio最新版)
2 回复
在鸿蒙Next的ArkTS中,使用router.getParams()获取页面参数时,需要注意以下几点:
-
页面跳转时传参:
router.pushUrl({ url: 'pages/DetailPage', params: { id: 123, name: 'test' } }) -
目标页面接收参数:
import router from '[@ohos](/user/ohos).router' [@Entry](/user/Entry) [@Component](/user/Component) struct DetailPage { private id: number = 0 private name: string = '' onPageShow() { const params = router.getParams() as Record<string, Object> this.id = params['id'] as number this.name = params['name'] as string } } -
注意事项:
- 建议在
onPageShow()生命周期中获取参数 - 使用类型断言确保类型安全
- 参数通过键值对形式传递和接收
- 确保参数键名与传递时一致
- 建议在
-
参数验证:
const params = router.getParams() if (params && params['id']) { // 处理参数 }
这样就能正确获取到传递的参数值了。
更多关于鸿蒙Next ArkTS中router.getParams()如何正确取值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next的ArkTS中,使用router.getParams()获取页面路由参数时,需要注意以下几点以确保正确取值:
1. 基本用法
在目标页面的onPageShow()或自定义方法中调用:
import router from '@ohos.router';
onPageShow() {
let params = router.getParams(); // 获取传递的参数对象
if (params) {
let id = params['id'] as string; // 读取具体参数(需类型断言)
console.log('接收到的参数:', id);
}
}
2. 关键注意事项
- 参数类型:
getParams()返回Object类型,需通过键名访问并手动断言类型(如as string) - 时机选择:建议在
onPageShow()生命周期中获取,确保路由已完成参数传递 - 空值处理:始终检查返回值是否为空,避免未传参时访问属性报错
3. 传递参数示例
发起页面传递参数:
router.pushUrl({
url: 'pages/TargetPage',
params: { id: '123', name: 'ArkTS' } // 定义参数对象
})
4. 完整示例
// 目标页面
@Entry
@Component
struct TargetPage {
@State message: string = '';
onPageShow() {
let params = router.getParams();
if (params && params['id']) {
this.message = params['id'] as string;
}
}
build() {
Text(this.message).fontSize(20)
}
}
常见问题
- 若获取到
undefined:检查传递参数的键名是否一致,或尝试在onPageShow()中添加延时操作 - 类型错误:使用
as进行类型断言,或通过String(params['id'])转换
通过规范的类型断言和生命周期管理,可确保参数正确获取。

