Skip to content

下拉菜单项

@astryxdesign/core v0.7.1 · DropdownMenuItem

属性类型默认值说明
labelstring | number—行内的主要文字。需要富文本时改用 label 插槽。
descriptionstring | number—标签下方的次要说明文字。需要富文本时改用 description 插槽。
iconstring | Component—标签前的图标:一个 CSS 图标类(例如 UnoCSS 的 i-carbon-copy,也可以是你自己的类名),或一个绘制 SVG 的组件。astryx-vue 不自带图标。想放任意内容时改用 icon 插槽。
isDisabledbooleanfalse禁用这一行。禁用的行会被方向键和字母跳转跳过,并且不响应点击。
variant'default' | 'destructive''default'视觉变体。destructive 会把标签、说明和图标一起换成错误色,用于删除这类危险动作。悬停底色仍是共用的中性色,与其他行一致。
hasCloseOnSelectbooleantrue激活这一行后是否收起菜单。像“复制”这种在行内回报结果的动作可以设为 false。
hrefstring—这一行要跳转的地址。给出后整行就是一个带 role="menuitem" 的链接,所以 ⌘/Ctrl 点击和中键点击仍然保持浏览器原本的含义。
target'_blank' | '_self'—链接的打开方式,仅在给出 href 时使用。
relstring—链接关系,仅在给出 href 时使用。target="_blank" 时会自动加上 noopener 和 noreferrer。
onClick(event: MouseEvent) => void—激活这一行时调用。链接行会在浏览器跳转前调用;带修饰键的点击交给浏览器处理,不调用它。

事件 ​

名称载荷说明
clickMouseEvent激活这一行时触发,带回触发它的那次点击。@click 和 onClick 走的是同一个处理函数,所以同一行不会被执行两次。

插槽 ​

  • icon:任意前置内容,替代 icon 属性。
  • label:替代 label 属性的富文本。
  • description:替代 description 属性的富文本。
  • endContent:行尾内容,例如一个提示快捷键的 Kbd。

原生属性 ​

行的根元素就是带 role="menuitem" 的那个元素:给出 href 时是一个 <a>,否则是 Item 的根。属性和 DOM 事件都会落到它上面,所以 id、data-*、aria-* 以及拖放相关的处理函数都写在行上。class 和 style 也落到这个根元素,示例里就是靠它把某一行画成高亮状态。

行高跟着菜单的 size 走,不用额外传属性就能和触发按钮对齐。