1.场景原因。鸿蒙通过页面跳转的时候 会 先进行反序列化,然后传递过去在序列化,在进行超过1000首歌曲传递的时候 会造成页面的卡顿

2.解决方案 通过回调 函数 将 所需要的 数据 return 出去。 ---因为 函数不会被序列化

3.代码

A页面

 private getSongCallback: ()=>Song[] = this.getSongs.bind(this); 
//并将其赋值为绑定了当前实例(this)的 getSongs 方法。主要用于确保函数在被传递或调用时,内部的 this 指向始终正确(指向当前类实例)
//具体的函数
// 将1000首歌曲通过 函数纯递过去
  getSongs(){
    return this.songs;
  }
// 具体的传递
 getSongs:this.getSongCallback,



//B 页面进行接收并且调用
 private getSongs: (() => Song[]) | null = null //接收
//调用
 this.getSongs = options['getSongs']
        this.reactiveSongList = this.getSongs?.() as Song[]

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐