HarmonyOS 鸿蒙Next 自定义组件如何在布局层添加onClick事件等系统UI自带的方法
HarmonyOS 鸿蒙Next 自定义组件如何在布局层添加onClick事件等系统UI自带的方法
自定义组件如何在布局层添加onClick事件等系统ui自带的方法 比如我有一个自定义组件如下
import { ExposureController } from './ExposureController'
class StackMF implements AttributeModifier<StackAttribute> {
}
@Component
export struct ExposureStack {
mf: AttributeModifier<StackAttribute> = new StackMF()
controller: ExposureController = new ExposureController({})
itemPosition?: number
data?: Object
@BuilderParam builderParam: () => void = this.buildCloser
@Builder
buildCloser() {
}
build() {
Stack() {
this.builderParam()
}.onVisibleAreaChange([0, 1], (isVisible, ratio) => {
this.controller.onChangeVisible(isVisible, ratio, this.itemPosition ?? 0, this.data)
}).attributeModifier(this.mf)
}
}
// 然后我在使用这个组件时想添加onClick事件
ExposureStack({
itemPosition: this.positionItem,
data: this.video,
controller: this.stackController,
mf: this.videoStackMf
}) {
}.onClick(() => {
this.videoControl.requestFullscreen(true);
})
但是这么书写会报错: Cannot find name 'onClick'. Did you mean the instance member 'this.onClick'? 请问如何让我的自定义组件具备咱们系统ui组件的一些能力方法啊,比如onClick啥的
2 回复
测试自定义组件是可以添加onClick方法的下面是测试demo。可以在自定义组件外层套一个column,给column添加点击事件,或者直接在自定义组件内部直接添加onClick事件。
[@Entry](/user/Entry)
struct Index {
@State message: string = ‘Hello World’;
build() {
RelativeContainer() {
component()
.onClick(() => {
console.log(‘hello’)
})
}
.height(‘100%’)
.width(‘100%’)
}
}
struct component {
build() {
Text(‘测试’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>