FloatMenu 浮动菜单

定义/Definition

提示层式的浮动菜单

规则 / Rule

  • 点击背景的任一位置时,可以隐藏菜单;

  • 浮动菜单可以是选择也可以是行为(筛选、跳转…)。

代码演示

FloatMenu

  1. // 此处用作demo展示,不要用在生产环境
  2. this.customNavFlag = true;
  3. import { FloatMenu, Button, NavBar } from 'antd-mobile';
  4. const Item = FloatMenu.Item;
  5. const App = React.createClass({
  6. getInitialState() {
  7. return {
  8. visible: false,
  9. visible1: false,
  10. selected: '',
  11. };
  12. },
  13. onSelect(opt) {
  14. this.setState({
  15. visible: false,
  16. selected: opt.props.value,
  17. });
  18. },
  19. handleVisibleChange(visible) {
  20. this.setState({
  21. visible,
  22. });
  23. },
  24. render() {
  25. let overlay = [1, 2, 3].map((i, index) => <Item key={index} value={`option ${i}`}>option {i}</Item>);
  26. overlay = overlay.concat([
  27. <Item key="4" value="disabled" disabled>disabled opt</Item>,
  28. <Item key="5" value="special" iconName="github">special opt</Item>,
  29. <Item key="6" value="button ct" iconName="github">
  30. <Button
  31. size="small"
  32. inline
  33. onClick={() => this.handleVisibleChange(false)}
  34. >
  35. 关闭
  36. </Button>
  37. </Item>,
  38. ]);
  39. return (<div>
  40. <NavBar iconName={false}
  41. rightContent={<FloatMenu
  42. visible={this.state.visible}
  43. overlay={overlay}
  44. popupAlign={{
  45. offset: [5, 14],
  46. }}
  47. onVisibleChange={this.handleVisibleChange}
  48. onSelect={this.onSelect}
  49. >
  50. <a href="#" style={{ color: 'white' }}>菜单</a>
  51. </FloatMenu>}
  52. >
  53. FloatMenu
  54. </NavBar>
  55. <p>选中了 {this.state.selected}</p>
  56. <div style={{ paddingTop: 80, paddingLeft: 100 }}>
  57. <FloatMenu
  58. visible={this.state.visible1}
  59. overlay={[
  60. <Item key="0" value="0">item 0</Item>,
  61. <Item key="1" value="1">item 1</Item>,
  62. <Item key="2" value="1">item 1</Item>,
  63. ]}
  64. placement="topRight"
  65. onVisibleChange={v => this.setState({ visible1: v })}
  66. >
  67. <a href="#">菜单</a>
  68. </FloatMenu>
  69. </div>
  70. </div>);
  71. },
  72. });
  73. ReactDOM.render(<App />, mountNode);

FloatMenu浮动菜单 - 图1

API

FloatMenu

成员说明类型默认值
visible(web)当前显隐状态Booleanfalse
onVisibleChange(web)当显隐状态变化时调用Function-
placement(web)enum{'left','right','top','bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight'}String'bottomRight'
popupAlign(web)用于设置偏移量等、会被合并到 placement 的设置中,可选值为 dom-alignalignConfig配置( points 设置用 placement 代替)Object{ overflow: { adjustY: 0, adjustX: 0 } }禁掉位置自动适应
overlay弹出层内容React.node-
onSelect选中的选项Function-
stylemenu 样式Object-
triggerStyle(ios/android)触发元素外围容器样式Object-
overlayStyle(ios/android)弹出层外围容器样式Object-
contextStyle(ios/android)最外围容器样式Object-
renderOverlayComponent(ios/android)自定义弹出层的外围组件,默认是ScrollView,示例(options) => <SomeCustomContainer>{options}</SomeCustomContainer>Function-
name(ios/android)menu名字,用于手动触发开关menuString-
openMenu/closeMenu/toggleMenu(ios/android)用于手动开关 menu,参数为上边 menu 的 name . 使用示例:this.refs.mc.refs.menuContext.toggleMenu('m') 见 demoFunction(name)-

FloatMenu.Item

成员说明类型默认值
children节点内容String/React.node-
disabled是否禁用Booleanfalse
iconName(web)icon名称String-