HarmonyOS router.getParams()数据传递的问题

diamagnetic
发布于 2025-5-23 21:20
浏览
0收藏

为什么我的Params的方法无法传递到另一个界面?
1.传参界面:
.onClick(async () => {
// 查找第一个未开始订单

                  const currentOrder = item;

                  router.pushUrl({
                    url: 'pages/OrderDetailPage',
                    params: {
                      scanResult: item.id
                    }})
                  console.log('ken', item.id); // 打印原始ID

)}
接受参数的界面:
onPageShow() {
try {
const params = router.getParams() as OrderParams;
console.debug(“路由参数:”, params);

    if (typeof params?.scanResult === 'number') {
      this.getOrderDetail(params.scanResult);
    } else {
      throw new Error("参数类型错误");
    }
  } catch (error) {
    console.error("参数解析失败:", error);
    router.back(); // 自动返回上一页[8](@ref)
  }
}

已于2025-5-23 21:21:42修改
收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
diamagnetic
diamagnetic


正确的代码为:

1.传参界面界面

interface RouteParams {  scanResult: string;}
const currentOrder = item;
// 显式类型标注[1,3](@ref)const params: RouteParams = {  scanResult: item.id.toString() // 强制转为字符串};
router.pushUrl({  url: 'pages/OrderDetailPage',  params: params // ✅ 类型安全传递});

2.接受参数界面

try {  const params = router.getParams() as OrderParams;  console.debug("路由参数:", params);  console.debug("[ROUTER] 接收参数:", JSON.stringify(router.getParams()));  if (typeof params?.scanResult === 'string') {    this.getOrderDetail(params.scanResult);  } else {    throw new Error("参数类型错误");  }} catch (error) {  console.error("参数解析失败:", error);  router.back(); // 自动返回上一页[8](@ref)}

其他原因:

1.可能有相同的传递路由,导致传递的参数为空出现错误。

2.参数传递的类型与你所定义的不同。

1
回复
2025-6-2 19:47:57
回复
    相关推荐