鸿蒙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字符串,然后在目标页面反序列化还原。
步骤:
- 
传递对象(源页面): 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);
- 
接收对象(目标页面): 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
这种方式简单可靠,适用于传递简单的数据对象。
 
        
       
                   
                   
                  

