如下面代码, @Builder构造的自定义组件无法接受外部传递的箭头函数
@Entry
@Component
export default struct FlowPlaybackPage {
build() {
Stack(){
Custom({
onClickEvent: () => {
this.onClickEvent2()
}
})
}
}
onClickEvent2 = ():void =>{
console.log('onClickEvent2');
}
}
@Component
export struct Custom{
onClickEvent? : () => void
@Builder renderBlank() {
Column(){
Button('Button')
.height(50)
.onClick(() => {
//Builder方式自定义组件this
this.onClickEvent?.()
})
}
}
build() {
Stack(){
CustomInner({
builderCustom: this.renderBlank
})
}
}
}
@Builder function bottomCustom() {}
@Component
export struct CustomInner {
@BuilderParam builderCustom: () => void = bottomCustom;
build() {
Column(){
this.builderCustom()
}
}
}
@Builder构造的自定义组件可以接受外部传递的箭头函数,但是由于@Builder又传递给了另一个自定义组件,this指向改变,在另一个自定义组件内无该方法。可将箭头函数继续传递。
参考demo:
@Entry
@Component
export default struct BuilderTest {
build() {
Stack() {
Custom({
onClickEvent:this.onClickEvent2
})
}
}
onClickEvent2 = (): void => {
console.log('onClickEvent2');
}
}
@Component
export struct Custom {
onClickEvent?: () => void
@Builder
renderBlank() {
Column() {
Button('Button')
.height(50)
.onClick(() => {
this.onClickEvent?.()
})
}
}
build() {
Column() {
CustomInner({
customBuilderParam: this.renderBlank,
onClickEvent:this.onClickEvent
})
}
}
}
@Component
export struct CustomInner {
onClickEvent?: () => void
@Builder
renderBlank() {
}
@BuilderParam customBuilderParam: () => void = this.renderBlank;
build() {
Column() {
this.customBuilderParam()
}
}
}
问题内容: 鉴于此组件: 如何添加一个无需使用语法即可定义状态的构造函数? 问题答案: 由于它是一个无状态组件,因此没有组件生命周期。因此,您不能指定。 您必须进行扩展以创建有状态组件,然后需要一个构造函数,并且可以使用。 更新 由于阵营16.8.0和挂钩得到了引入有更多的选择。 挂钩是一项新的功能建议,使您无需编写类即可使用状态和其他React>功能。它们作为> v16.8.0的一部分在Reac
子组件事件能否到传递父组件
问题内容: 我有以下代码: 我一直期望这样做能够成功,因为MyType实现了MyInterface,但是我得到了: 不能将对象(类型 MyType)用作类型 MyInterface作为AcceptInterface的参数:* MyInterface是指向接口的指针,而不是接口 我尝试做类型断言:object。(MyInterface),但这也不起作用。 我该怎么做? 问题答案: 如错误所示, 不能
我正在使用Java SDK在HarmonyOS中创建一个自定义组件,在那里我必须双击一些任务。但我无法检测到双击事件。 在Android中,借助GestureDetector类,我们可以检测双击事件,如下所示: 在HMOS中,我尝试使用Component.TouchEventListener检测双击,如下所示: 但是,它没有检测到双击。在双击也有打印单点击检测。
前面提到的代码是从MDN修改的。这段代码没有任何意图,只是为了变量声明示例的目的。
如何自定义Video组件控制栏样式