Menu 菜单组件 #

基本用法 #

jsx
import {
  Menu,
  MenuButton,
  MenuList,
  MenuItem,
  Button,
} from '@chakra-ui/react'
import { ChevronDownIcon } from '@chakra-ui/icons'

function Example() {
  return (
    <Menu>
      <MenuButton as={Button} rightIcon={<ChevronDownIcon />}>
        操作
      </MenuButton>
      <MenuList>
        <MenuItem>下载</MenuItem>
        <MenuItem>复制</MenuItem>
        <MenuItem>标记</MenuItem>
        <MenuItem>删除</MenuItem>
      </MenuList>
    </Menu>
  )
}

菜单分组 #

jsx
import { MenuGroup, MenuDivider } from '@chakra-ui/react'

<Menu>
  <MenuButton as={Button}>文件</MenuButton>
  <MenuList>
    <MenuGroup title="文件操作">
      <MenuItem>新建</MenuItem>
      <MenuItem>打开</MenuItem>
      <MenuItem>保存</MenuItem>
    </MenuGroup>
    <MenuDivider />
    <MenuGroup title="导出">
      <MenuItem>导出为 PDF</MenuItem>
      <MenuItem>导出为 Word</MenuItem>
    </MenuGroup>
  </MenuList>
</Menu>

菜单图标 #

jsx
import { Icon } from '@chakra-ui/react'
import { FiEdit, FiCopy, FiTrash, FiShare } from 'react-icons/fi'

<Menu>
  <MenuButton as={Button}>操作</MenuButton>
  <MenuList>
    <MenuItem icon={<Icon as={FiEdit} />}>编辑</MenuItem>
    <MenuItem icon={<Icon as={FiCopy} />}>复制</MenuItem>
    <MenuItem icon={<Icon as={FiShare} />}>分享</MenuItem>
    <MenuItem icon={<Icon as={FiTrash} />} color="red.500">删除</MenuItem>
  </MenuList>
</Menu>

菜单快捷键 #

jsx
<Menu>
  <MenuButton as={Button}>编辑</MenuButton>
  <MenuList>
    <MenuItem command="⌘N">新建</MenuItem>
    <MenuItem command="⌘O">打开</MenuItem>
    <MenuItem command="⌘S">保存</MenuItem>
  </MenuList>
</Menu>

禁用菜单项 #

jsx
<Menu>
  <MenuButton as={Button}>操作</MenuButton>
  <MenuList>
    <MenuItem>可用项</MenuItem>
    <MenuItem isDisabled>禁用项</MenuItem>
  </MenuList>
</Menu>

实用示例 #

用户菜单 #

jsx
function UserMenu({ user }) {
  return (
    <Menu>
      <MenuButton>
        <HStack>
          <Avatar src={user.avatar} size="sm" />
          <Text>{user.name}</Text>
          <ChevronDownIcon />
        </HStack>
      </MenuButton>
      <MenuList>
        <MenuItem>个人资料</MenuItem>
        <MenuItem>设置</MenuItem>
        <MenuDivider />
        <MenuItem color="red.500">退出登录</MenuItem>
      </MenuList>
    </Menu>
  )
}
属性 说明
isLazy 懒加载 boolean
gutter 间距 尺寸值
placement 位置 bottom, top, left, right…

下一步 #

现在你已经掌握了 Menu 组件,接下来学习 Tabs 标签页,了解如何使用标签页切换组件!

最后更新:2026-03-28