Router传递Object对象解读

Router传递Object对象解读

HarmonyOS
2024-05-26 18:01:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
trobust

Router传递Object对象解读

Router传递Object对象时,实际在底层使用了JSON.stringify()序列化为JSON字符串进行的。由于JSON 不允许包含函数,JSON.stringify()会删除 JavaScript 对象的函数,所以只能用来传递对象的属性值,不能传递function。如下示例可以验证:

export default class Student { 
  constructor(name:string) { 
    this.name = name 
  } 
  name:string 
  getName() { 
    return this.name; 
  } 
} 
 
@Entry 
@Component 
struct Index { 
  build() { 
    Column() { 
      Button() 
        .onClick(() => { 
          let stu = new Student('OpenHarmony') 
          router.pushUrl({ url: 'pages/other', params: stu }) 
        }) 
    } 
  } 
} 
 
@Entry 
@Component 
struct Other { 
  @State message: string = 'Other' 
 
  onPageShow() { 
    let stu = router.getParams() as Student 
    console.info(`student prop name = ${stu.name}`) 
    try { 
      console.info(`student func getName = ${stu.getName()}`) 
    } catch (e) { 
      console.info(`student getName err = ${JSON.stringify(e)}`) 
    } 
  } 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}

onLoadIntercept志打印:能获取对象的属性值,但是使用成员函数时会报错。

分享
微博
QQ
微信
回复
2024-05-27 22:51:07
相关问题
router传递hashmap参数问题
354浏览 • 1回复 待解决
如何获取router.back传递的参数
1034浏览 • 1回复 待解决
如何将Map/HashMap转为Object对象
450浏览 • 1回复 待解决
ArkTs怎么传递对象或者类给Native
769浏览 • 1回复 待解决
Class Router和namespace router有什么区别
518浏览 • 1回复 待解决
Object标准库接口限制
461浏览 • 1回复 待解决
Web拦截不到vue的router跳转
437浏览 • 0回复 待解决
泛型参数转换为Object编译失败
271浏览 • 1回复 待解决
如何实现router命名路由跳转
427浏览 • 1回复 待解决
如何拦截onTouch事件传递
119浏览 • 1回复 待解决
ArkTS对象绑定的C++对象如何回收?
354浏览 • 1回复 待解决