复用组件reuseId作用是什么

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

HarmonyOS
2024-06-13 23:35:20
浏览
收藏 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' 
}
分享
微博
QQ
微信
回复
2024-06-14 22:44:21
相关问题
性能优化中的组件复用原理是什么
1955浏览 • 1回复 待解决
HarmonyOS 如何知道组件复用是否生效
400浏览 • 1回复 待解决
util.generateRandomUUID是什么作用
1865浏览 • 1回复 待解决
他们的作用是什么呢?
3530浏览 • 1回复 待解决