鸿蒙Next路由跳转如何传递对象

在鸿蒙Next开发中,使用路由跳转时如何传递对象参数?目前尝试通过路由的params传递对象,但接收端获取到的数据为undefined。请问正确的对象传递方式是什么?是否需要序列化处理或通过其他机制实现?

2 回复

鸿蒙Next传对象?简单!用params就行,把对象塞进去,跳转时带上。记得对象要可序列化,不然路由会懵圈。代码示例:router.pushUrl({url: 'pages/Detail', params: {user: userObj}})。接收方用params.user取。搞定!

更多关于鸿蒙Next路由跳转如何传递对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,可以通过router.pushUrl()方法传递对象。由于路由参数要求是字符串,需要先将对象序列化为JSON字符串,然后在目标页面反序列化还原。

步骤:

  1. 传递对象(源页面):

    import router from '[@ohos](/user/ohos).router';
    
    let userInfo = {
      name: '张三',
      age: 25,
      city: '北京'
    };
    
    // 序列化为JSON字符串
    let params = {
      url: 'pages/TargetPage',
      params: {
        userData: JSON.stringify(userInfo)  // 关键:对象转JSON字符串
      }
    };
    router.pushUrl(params);
    
  2. 接收对象(目标页面):

    import router from '[@ohos](/user/ohos).router';
    
    // 获取传递的参数
    let receivedData = router.getParams()?.['userData'];
    
    if (receivedData) {
      // 反序列化还原为对象
      let userInfo = JSON.parse(receivedData as string);
      console.log(`姓名:${userInfo.name}, 年龄:${userInfo.age}`);
    }
    

注意事项:

  • 对象必须可序列化(不含函数、循环引用等)
  • 大数据量建议使用全局数据管理
  • 页面路由参数长度限制为100KB

这种方式简单可靠,适用于传递简单的数据对象。

回到顶部