Menu 菜单

在一个临时的面板上显示一组操作。

规则

  • 至少包含 2 个以上的菜单项。

  • 不应该被当做主要导航方式。

代码演示

单级菜单

  1. import { Menu, Toast } from 'antd-mobile';
  2. const data = [
  3. {
  4. label: '中餐',
  5. value: '21',
  6. }, {
  7. label: '还没生效',
  8. value: '22',
  9. disabled: true,
  10. }, {
  11. label: '火锅',
  12. value: '23',
  13. }, {
  14. label: '自助餐',
  15. value: '24',
  16. }, {
  17. label: '快餐',
  18. value: '25',
  19. }, {
  20. label: '小吃',
  21. value: '26',
  22. }, {
  23. label: '面包甜点',
  24. value: '27',
  25. }, {
  26. label: '生鲜水果',
  27. value: '28',
  28. }, {
  29. label: '面食',
  30. value: '29',
  31. }, {
  32. label: '休闲食品',
  33. value: '210',
  34. }, {
  35. label: '日韩料理',
  36. value: '211',
  37. }, {
  38. label: '咖啡',
  39. value: '212',
  40. }, {
  41. label: '粤菜',
  42. value: '213',
  43. },
  44. ];
  45. const MenuExample = React.createClass({
  46. onChange(value) {
  47. let label = '';
  48. data.forEach((el) => {
  49. if (el.value === value[0]) {
  50. label = el.label;
  51. }
  52. });
  53. Toast.info(`选中了 ${label}`);
  54. },
  55. render() {
  56. return <Menu data={data} level={1} onChange={this.onChange} height={Math.round(document.documentElement.clientHeight / 3)} />;
  57. },
  58. });
  59. ReactDOM.render(<MenuExample />, mountNode);

二级菜单

  1. import { Menu, Toast } from 'antd-mobile';
  2. const data = [
  3. {
  4. value: '1',
  5. label: '全部分类',
  6. isLeaf: true,
  7. }, {
  8. value: '2',
  9. label: '美食',
  10. children: [
  11. {
  12. label: '中餐',
  13. value: '21',
  14. }, {
  15. label: '全部美食',
  16. value: '22',
  17. disabled: true,
  18. }, {
  19. label: '火锅',
  20. value: '23',
  21. }, {
  22. label: '自助餐',
  23. value: '24',
  24. }, {
  25. label: '快餐',
  26. value: '25',
  27. }, {
  28. label: '小吃',
  29. value: '26',
  30. }, {
  31. label: '面包甜点',
  32. value: '27',
  33. }, {
  34. label: '生鲜水果',
  35. value: '28',
  36. }, {
  37. label: '面食',
  38. value: '29',
  39. }, {
  40. label: '休闲食品',
  41. value: '210',
  42. }, {
  43. label: '日韩料理',
  44. value: '211',
  45. }, {
  46. label: '咖啡',
  47. value: '212',
  48. }, {
  49. label: '粤菜',
  50. value: '213',
  51. }],
  52. }, {
  53. value: '3',
  54. label: '超市',
  55. children: [
  56. {
  57. label: '全部超市',
  58. value: '31',
  59. }, {
  60. label: '超市',
  61. value: '32',
  62. disabled: true,
  63. }, {
  64. label: '便利店',
  65. value: '33',
  66. }, {
  67. label: '个人护理',
  68. value: '34',
  69. }],
  70. }, {
  71. value: '4',
  72. label: '丽人',
  73. children: [
  74. {
  75. label: '全部丽人',
  76. value: '41',
  77. }, {
  78. label: '美发',
  79. value: '42',
  80. disabled: true,
  81. }, {
  82. label: '美容',
  83. value: '43',
  84. }, {
  85. label: '美甲',
  86. value: '44',
  87. }],
  88. }, {
  89. value: '5',
  90. label: '休闲娱乐',
  91. children: [
  92. {
  93. label: '全部休闲娱乐',
  94. value: '51',
  95. }, {
  96. label: '咖啡',
  97. value: '52',
  98. disabled: true,
  99. }, {
  100. label: '酒吧',
  101. value: '53',
  102. }, {
  103. label: '足疗养生洗浴',
  104. value: '54',
  105. }, {
  106. label: '保健/休闲养生',
  107. value: '55',
  108. }, {
  109. label: '棋牌休闲',
  110. value: '56',
  111. }, {
  112. label: 'KTV及其它',
  113. value: '57',
  114. }],
  115. },
  116. ];
  117. const MenuExample = React.createClass({
  118. onChange(value) {
  119. let label = '';
  120. data.forEach((el) => {
  121. if (el.value === value[0]) {
  122. if (el.isLeaf) {
  123. label = el.label;
  124. } else {
  125. el.children.forEach((el2) => {
  126. if (el2.value === value[1]) {
  127. label = el2.label;
  128. }
  129. });
  130. }
  131. }
  132. });
  133. Toast.info(`选中了 ${label}`);
  134. },
  135. render() {
  136. return <Menu data={data} onChange={this.onChange} />;
  137. },
  138. });
  139. ReactDOM.render(<MenuExample />, mountNode);

Menu菜单 - 图1

API

Menu

成员说明类型可选值默认值
data筛选数据Array,元素类型是对象,必须包含labelvalue,children值为数组(children和isLeaf二选一),isLeaftrue(布尔值)时没有children属性(仅第一级支持);children数的组元素也必须包含valuevalue,另有disabled代表不可选(仅菜单第二级支持或者单级菜单的第一级)。[]
level菜单级数number1、22
value初始值Array,一级和二级筛选数据的value组成的数组[]
onChange选择后的回调Function(value)
height筛选组件的高度numberdocument.documentElement.clientHeight / 2