HarmonyOS 通过向子组件传递builder时,组件复用没有生效
class MyDataSource implements IDataSource {
private data: number[] = []
constructor() {
for (let i = 0; i < 100000; i++) {
this.data.push(i)
}
}
totalCount(): number {
return this.data.length
}
getData(index: number): number {
return this.data[index]
}
registerDataChangeListener(listener: DataChangeListener): void {
}
unregisterDataChangeListener(listener: DataChangeListener): void {
}
}
@Entry
@Component
struct Index {
@Builder
private itemContent(item: number) {
Item()
}
build() {
Stack() {
A({
// 可以触发item()组件复用, 但是使用了@Provide装饰器会报错
// itemContent: (item, index): void => this.itemContent(item)
// @Provide装饰器不报错,但是无法触发item()组件复用逻辑
itemContent: this.itemContent
})
.width('100%')
.height('100%')
}
.width('100%')
.height('100%')
}
}
@Component
struct A {
@BuilderParam
itemContent: (item: number, index: number) => void
build() {
List() {
LazyForEach(new MyDataSource(), (item: number, index) => EzListItemViewWrapper({
itemContent: this.itemContent,
item: item,
index: index
}), (item: number, index) => `${item}`)
}
.width('100%')
.height('100%')
}
}
@Component
export struct EzListItemViewWrapper {
@BuilderParam itemContent: (item: number, index: number) => void
item?: number
index?: number
@Provide parentValue: number = 1
build() {
this.itemContent(this.item!, this.index!)
}
}
@Component
@Reusable
struct Item {
// 当使用下面这种形式传参时,会报crash。itemContent: (item, index): void => this.itemContent(item)
@Consume parentValue: number
aboutToReuse(params: ESObject): void {
console.log("TestReuse: aboutToReuse")
}
build() {
Text("TTT").width('100%').height(90)
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS @Prop同步给子组件的数据如何通过@Builder传递?
243浏览 • 1回复 待解决
HarmonyOS 给web组件设置expandSafeArea没有生效
394浏览 • 1回复 待解决
HarmonyOS popup组件placement设置top没有生效
321浏览 • 1回复 待解决
通过Web组件的.darkMode(WebDarkMode.On)方式设置为深色模式没有生效。
638浏览 • 1回复 待解决
Select组件的设置.optionWidth("50vp")没有生效
739浏览 • 1回复 待解决
HarmonyOS 子组件如何向父组件单向传递状态变量值
53浏览 • 1回复 待解决
HarmonyOS 创建子窗口时,如何向子窗口传递页面参数
297浏览 • 1回复 待解决
HarmonyOS 如何通过变量将@Builder修饰的自定义view传递到子组件中?
426浏览 • 1回复 待解决
为什么设置了Web组件的深色模式但是没有生效?
859浏览 • 1回复 待解决
HarmonyOS 代码混淆配置没有生效
299浏览 • 1回复 待解决
HarmonyOS list控件子组件复用
664浏览 • 1回复 待解决
HarmonyOS badge 子组件是自定义组件时不生效
430浏览 • 1回复 待解决
组件复用生效的条件有哪些?
456浏览 • 1回复 待解决
HarmonyOS 如何知道组件复用是否生效
590浏览 • 1回复 待解决
HarmonyOS 获取系统时间戳没有生效
589浏览 • 1回复 待解决
harmony页面开发父组件如何传递事件方法给子组件,通过子组件可以进行回调反馈?
982浏览 • 2回复 待解决
父组件给子组件传递函数
545浏览 • 1回复 待解决
HarmonyOS 使用 expandSafeArea 控制组件扩展到安全区域,没有生效
852浏览 • 1回复 待解决
HarmonyOS 使用@ObservedV2的类,无法从父组件通过构造函数传递给子组件
341浏览 • 1回复 待解决
HarmonyOS 通过属性来传递组件
234浏览 • 1回复 待解决
Stack布局设置Alignment.BottomStart没有生效
2784浏览 • 1回复 待解决
HarmonyOS 获取18位随机数没有生效
323浏览 • 1回复 待解决
HarmonyOS PixelMap类型无法从父组件传递给子组件
279浏览 • 1回复 待解决
HarmonyOS 事件能从父组件传递到子组件吗
238浏览 • 1回复 待解决
HarmonyOS 自定义组件父组件如何给子组件传递数据
310浏览 • 1回复 待解决
@Provide使用不规范造成的,@Provide的定义应该在@Consume的祖先组件中,出问题的场景,@Provide和@Consume没有父子关系,导致@Consume初始化找不到@Provide