MenuButton 菜单按钮

如果项目中使用的是 0.x 版本的基础组件(@icedesign/base, @ali/ice, @alife/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @alifd/next@latest -S

使用指南

  • 通过触发按钮打开弹层菜单。支持透传所有的 Button 属性。

  • 子组件 Item, Group, DividerMenu 中对应的子组件,请参考 Menu 文档。

API

MenuButton

参数说明类型默认值
label按钮上的文本内容ReactNode-
autoWidth弹层是否与按钮宽度相同Booleantrue
popupTriggerType弹层触发方式可选值:'click', 'hover'Enum'click'
popupContainer弹层容器签名:Function() => voidFunction-
visible弹层展开状态Boolean-
defaultVisible弹层默认是否展开Boolean-
onVisibleChange弹层在显示和隐藏触发的事件签名:Function() => voidFunctionfunc.noop
popupStyle弹层自定义样式Object-
popupClassName弹层自定义样式类String-
popupProps弹层属性透传Object-
followTrigger是否跟随滚动Boolean-
defaultSelectedKeys默认激活的菜单项(用法同 Menu 非受控)Array[]
selectedKeys激活的菜单项(用法同 Menu 受控)Array-
selectMode菜单的选择模式,同 Menu可选值:'single', 'multiple'Enum-
onItemClick点击菜单项后的回调,同 Menu签名:Function() => voidFunctionfunc.noop
onSelect选择菜单后的回调,同 Menu签名:Function() => voidFunctionfunc.noop
menuProps菜单属性透传Object{}

代码示例

基本

最简单的用法。支持 Button 的 shape, type, size, component, ghost 等属性透传。

MenuButton 菜单按钮 - 图1

查看源码在线预览

  1. import { MenuButton } from '@alifd/next';
  2. const { Item } = MenuButton;
  3. const menu = ['Undo', 'Redo', 'Cut', 'Copy', 'Paste'].map(item => <Item key={item}>{item}</Item>);
  4. ReactDOM.render(<div>
  5. <MenuButton label="Document Edit">{menu}</MenuButton>&nbsp;&nbsp;
  6. <MenuButton type="primary" label="Document Edit">{menu}</MenuButton>&nbsp;&nbsp;
  7. <MenuButton type="secondary" label="Document Edit">{menu}</MenuButton><br /><br />
  8. <MenuButton text label="Document Edit">{menu}</MenuButton>&nbsp;&nbsp;
  9. <MenuButton text type="primary" label="Document Edit">{menu}</MenuButton>&nbsp;&nbsp;
  10. <MenuButton text type="secondary" label="Document Edit">{menu}</MenuButton>
  11. </div>, mountNode);

尺寸

可以通过 size 属性改变按钮大小。

MenuButton 菜单按钮 - 图2

查看源码在线预览

  1. import { MenuButton } from '@alifd/next';
  2. const { Item } = MenuButton;
  3. const menu = ['Undo', 'Redo', 'Cut', 'Copy', 'Paste'].map(item => <Item key={item}>{item}</Item>);
  4. ReactDOM.render(<div>
  5. <MenuButton label="Edit Document" size="small">{menu}</MenuButton> &nbsp; &nbsp;
  6. <MenuButton label="Edit Document" size="medium">{menu}</MenuButton> &nbsp; &nbsp;
  7. <MenuButton label="Edit Document" size="large">{menu}</MenuButton>
  8. </div>, mountNode);

菜单组

支持菜单组和菜单分割线,使用方法同 Menu.Group, Menu.Item, Menu.Divider

MenuButton 菜单按钮 - 图3

查看源码在线预览

  1. import { MenuButton } from '@alifd/next';
  2. const { Item, Group, Divider } = MenuButton;
  3. function selectItem(id) {
  4. console.log(id);
  5. }
  6. ReactDOM.render(<MenuButton type="primary" label="Document Edit" onItemClick={selectItem}>
  7. <Item key="undo">Undo</Item>
  8. <Item key="redo">Redo</Item>
  9. <Divider />
  10. <Group>
  11. <Item key="cut">Cut</Item>
  12. <Item key="copy">Copy</Item>
  13. <Item key="paste">Paste</Item>
  14. </Group>
  15. </MenuButton>, mountNode);

菜单选择模式

通过 selectMode 控制菜单的选择模式。

MenuButton 菜单按钮 - 图4

查看源码在线预览

  1. import { MenuButton } from '@alifd/next';
  2. const { Item } = MenuButton;
  3. const menu = ['Undo', 'Redo', 'Cut', 'Copy', 'Paste'].map(item => <Item key={item}>{item}</Item>);
  4. ReactDOM.render(<div>
  5. <MenuButton label="Document Edit" selectMode="single" onSelect={keys => console.log(keys)}>{menu}</MenuButton>
  6. </div>, mountNode);

相关区块

MenuButton 菜单按钮 - 图5

暂无相关区块