复用组件reuseId作用是什么

复用组件reuseId作用是什么,如何使用。

HarmonyOS
2024-06-13 23:35:20
569浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
pfuchenlu

reuseId是复用标识,用于划分自定义组件的复用组。相同reuseId的组件会在同一个复用组中复用。

参考代码:

@Entry 
@Component 
struct ReusableDemo { 
  @State message: string = 'Hello World'; 
  @State lazyChatList: MyDataSource = new MyDataSource() 
 
  aboutToAppear() { 
    for (let i = 0; i <= 20; i++) { 
      if (i % 2 === 0) { 
        this.lazyChatList.pushData(new ClassA()) 
      } else { 
        this.lazyChatList.pushData(new ClassB()) 
      } 
    } 
  } 
 
  build() { 
    Column() { 
      List() { 
        LazyForEach(this.lazyChatList, (chatInfo: ClassA | ClassB, index: number) => { 
          ListItem() { 
            // 设置不同的复用组件reuseId 
            InnerRecentChat({ classItem: chatInfo }).reuseId(chatInfo.name) 
          } 
          .height(72) 
        }, (item: ClassA | ClassB) => item.name) 
      } 
      .cachedCount(3) 
      .backgroundColor('#fff') 
      .width('100%') 
      .height('100%') 
    }.layoutWeight(1) 
  } 
} 
 
@Reusable 
@Component 
struct InnerRecentChat { 
  aboutToReuse(param: ESObject) { 
    this.classItem = param.classItem 
  } 
 
  @State classItem: ClassA | ClassB = new ClassA() 
 
  build() { 
    Column() { 
      Text(this.classItem.name) 
    } 
  } 
} 
 
class MyDataSource implements IDataSource { 
  // 模拟复用组件两种不同的实现场景 
  private chatList: Array<ClassA | ClassB> = []; 
 
  totalCount(): number { 
    return this.chatList.length; 
  } 
 
  getData(index: number): ClassA | ClassB { 
    return this.chatList[index] 
  } 
 
  registerDataChangeListener(listener: DataChangeListener): void { 
    console.log('registerDataChangeListener'); 
  } 
 
  public pushData(data: ClassA | ClassB): void { 
    this.chatList.push(data); 
  } 
 
  unregisterDataChangeListener(listener: DataChangeListener): void { 
    console.log('unregisterDataChangeListener'); 
  } 
} 
 
class ClassA { 
  name?: string = 'classA' 
} 
 
class ClassB { 
  name?: string = 'classB' 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
分享
微博
QQ
微信
回复
2024-06-14 22:44:21


相关问题
HarmonyOS 字节码HAR的作用是什么
708浏览 • 1回复 待解决
外层oh-package dependences的作用是什么
1163浏览 • 1回复 待解决
性能优化中的组件复用原理是什么
3062浏览 • 1回复 待解决
提问
该提问已有2人参与 ,帮助了33人