HarmonyOS 鸿蒙Next bindMenu的用法

HarmonyOS 鸿蒙Next bindMenu的用法 【设备信息】Mate 60
【API版本】Api14
【DevEco Studio版本】5.0.7.200
【问题描述】

//a.ets
@Component
export default struct CustomPopopMenu{
  @Prop idstr:number=-1
  @Prop title:string=''
  build() {
   Column(){自定义菜单项}
  }
}

这样写提示Expected 0 arguments, but got 1.

//b.ets
Image($r('app.media.ic_more'))
  .bindMenu(CustomPopopMenu({idstr:1,title:''}))

更多关于HarmonyOS 鸿蒙Next bindMenu的用法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

Expected 0 arguments, but got 1 这个错误告诉我们,在调用函数时预期不带任何参数,但实际上传递了一个参数。

bindMenu给组件绑定菜单,点击后弹出菜单。弹出菜单项支持图标+文本排列和自定义两种功能,暂时可能不支持向菜单传函数参数。

bindMenu的用法参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-menu-0000001815927524#ZH-CN_TOPIC_0000001815927524__bindmenu

更多关于HarmonyOS 鸿蒙Next bindMenu的用法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


需要通过@Builder 的方式绑定

//b.ets
@Component
struct BindContextMenuDemo {
  // 通过[@Builder](/user/Builder)构建自定义菜单项
  [@Builder](/user/Builder) myMenu() {
    CustomPopopMenu()
  }

  build() {
    Image($r('app.media.ic_more'))
      .bindMenu(this.myMenu)
  }
}

//a.ets
@Component
export default struct CustomPopopMenu{
  @Prop idstr:number=-1
  @Prop title:string=''
  build() {
    Column(){自定义菜单项}
  }
}

在HarmonyOS(鸿蒙Next)中,bindMenu方法用于将菜单与特定的UI组件绑定,以便在用户与该组件交互时显示菜单。该方法通常用于处理长按事件或其他触发菜单显示的场景。

bindMenu的基本用法如下:

import { Menu, MenuItem } from '@ohos.application.UI';

// 创建一个菜单实例
const menu = new Menu();

// 添加菜单项
menu.addItem(new MenuItem({
  id: 'item1',
  label: '选项1',
  action: () => {
    console.log('选项1被点击');
  }
}));

menu.addItem(new MenuItem({
  id: 'item2',
  label: '选项2',
  action: () => {
    console.log('选项2被点击');
  }
}));

// 绑定菜单到某个UI组件
const button = document.getElementById('myButton');
button.bindMenu(menu);

// 触发菜单显示
button.addEventListener('longpress', () => {
  button.showMenu();
});

在上述代码中,首先创建了一个Menu实例,并添加了两个菜单项。然后,通过bindMenu方法将菜单绑定到一个按钮组件上。当用户长按按钮时,会触发longpress事件,调用showMenu方法显示绑定的菜单。

bindMenu方法的主要作用是将菜单与特定组件关联,使得菜单的显示和交互逻辑更加集中和易于管理。

回到顶部