HarmonyOS 鸿蒙Next 自定义组件如何在布局层添加onClick事件等系统UI自带的方法

发布于 1周前 作者 yuanlaile 最后一次编辑是 5天前 来自 鸿蒙OS

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)

@Component

struct Index {

  @State message: string = ‘Hello World’;

  build() {

    RelativeContainer() {

      component()

        .onClick(() => {

          console.log(‘hello’)

        })

    }

    .height(‘100%’)

    .width(‘100%’)

  }

}

@Component

struct component {

  build() {

    Text(‘测试’)

  }

}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS 鸿蒙Next中,自定义组件可以通过多种方式在布局层添加onClick事件等系统UI自带的方法。

首先,自定义组件需要实现build()函数来构建UI界面。在build()函数中,可以使用系统提供的组件(如Button)并为其添加onClick事件监听器。例如,通过Button组件的.onClick()方法,可以指定一个回调函数,当用户点击按钮时,该回调函数将被触发。

此外,自定义组件还可以接收父组件传递的事件处理函数。在父组件中,可以使用自定义组件的特定事件绑定语法(如@custom-click)来接收并处理自定义组件触发的事件。

另外,对于自定义布局,可以使用onMeasureSize和onPlaceChildren等接口来精确控制子组件的大小和位置。这些接口通常用于自定义组件内部,以实现复杂的布局逻辑。

总之,HarmonyOS 鸿蒙Next提供了丰富的工具和接口,使开发者能够轻松地为自定义组件添加onClick事件等系统UI自带的方法。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部