Skip to content

Dropdown 组件

下拉菜单组件,点击触发器弹出菜单选项列表,支持缩放淡入动画。

引入

tsx
import { Dropdown } from 'kra-ui';

基本用法

tsx
<Dropdown
  trigger="请选择"
  items={[
    { key: 'edit', label: '编辑' },
    { key: 'copy', label: '复制' },
    { key: 'delete', label: '删除' },
  ]}
  onSelect={(key) => console.log('选中:', key)}
/>

带分割线

tsx
<Dropdown
  trigger="操作"
  items={[
    { key: 'edit', label: '编辑' },
    { key: 'copy', label: '复制' },
    { key: 'delete', label: '删除', divider: true },
  ]}
  onSelect={onSelect}
/>

禁用项

tsx
<Dropdown
  trigger="选择"
  items={[
    { key: 'edit', label: '编辑' },
    { key: 'copy', label: '复制', disabled: true },
    { key: 'delete', label: '删除' },
  ]}
  onSelect={onSelect}
/>

自定义触发器

tsx
<Dropdown
  items={items}
  onSelect={onSelect}
  renderTrigger={(isOpen) => (
    <Button label={isOpen ? '收起' : '展开'} variant="outline" />
  )}
/>

右对齐

tsx
<Dropdown
  trigger="右对齐菜单"
  items={items}
  onSelect={onSelect}
  align="right"
/>

Props

属性类型默认值说明
itemsDropdownItem[]-菜单项列表(必填)
onSelect(key: string) => void-选中回调
triggerstring'请选择'触发按钮文字
renderTrigger(isOpen: boolean) => React.ReactNode-自定义触发器
menuWidthnumber-菜单宽度
align'left' | 'right''left'对齐方式
...BoxProps--继承 Box 属性
属性类型默认值说明
keystring-唯一标识
labelstring-显示文本
disabledbooleanfalse是否禁用
dividerbooleanfalse在此项上方显示分割线

动画效果

  • 缩放动画:菜单从 85% 缩放弹簧式放大到 100%
  • 淡入淡出:透明度平滑过渡