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传递?
27浏览 • 1回复 待解决
HarmonyOS 给web组件设置expandSafeArea没有生效
11浏览 • 1回复 待解决
HarmonyOS popup组件placement设置top没有生效
54浏览 • 1回复 待解决
通过Web组件的.darkMode(WebDarkMode.On)方式设置为深色模式没有生效。
434浏览 • 1回复 待解决
HarmonyOS 创建子窗口时,如何向子窗口传递页面参数
79浏览 • 1回复 待解决
Select组件的设置.optionWidth("50vp")没有生效
560浏览 • 1回复 待解决
HarmonyOS 如何通过变量将@Builder修饰的自定义view传递到子组件中?
246浏览 • 1回复 待解决
HarmonyOS 代码混淆配置没有生效
35浏览 • 1回复 待解决
为什么设置了Web组件的深色模式但是没有生效?
614浏览 • 1回复 待解决
HarmonyOS list控件子组件复用
409浏览 • 1回复 待解决
HarmonyOS badge 子组件是自定义组件时不生效
168浏览 • 1回复 待解决
组件复用生效的条件有哪些?
330浏览 • 1回复 待解决
HarmonyOS 如何知道组件复用是否生效
525浏览 • 1回复 待解决
HarmonyOS 获取系统时间戳没有生效
297浏览 • 1回复 待解决
HarmonyOS 使用 expandSafeArea 控制组件扩展到安全区域,没有生效
639浏览 • 1回复 待解决
harmony页面开发父组件如何传递事件方法给子组件,通过子组件可以进行回调反馈?
705浏览 • 2回复 待解决
父组件给子组件传递函数
304浏览 • 1回复 待解决
HarmonyOS 通过属性来传递组件
20浏览 • 1回复 待解决
HarmonyOS 使用@ObservedV2的类,无法从父组件通过构造函数传递给子组件
66浏览 • 1回复 待解决
Stack布局设置Alignment.BottomStart没有生效
2543浏览 • 1回复 待解决
HarmonyOS PixelMap类型无法从父组件传递给子组件
59浏览 • 1回复 待解决
HarmonyOS 父组件向子组件传的值,在子组件的哪个环节(生命周期)可以拿到
20浏览 • 1回复 待解决
子组件事件能否到传递父组件
2428浏览 • 1回复 待解决
HarmonyOS 自定义组件父组件如何给子组件传递数据
16浏览 • 1回复 待解决
HarmonyOS List是否允许使用@Builder作为其子组件
67浏览 • 1回复 待解决
@Provide使用不规范造成的,@Provide的定义应该在@Consume的祖先组件中,出问题的场景,@Provide和@Consume没有父子关系,导致@Consume初始化找不到@Provide