Button 按钮组件 #
基本用法 #
jsx
import { Button } from '@chakra-ui/react'
function Example() {
return <Button>默认按钮</Button>
}
按钮变体 #
solid(默认) #
jsx
<Button colorScheme="blue">主要按钮</Button>
<Button colorScheme="green">成功按钮</Button>
<Button colorScheme="red">危险按钮</Button>
<Button colorScheme="orange">警告按钮</Button>
outline #
jsx
<Button variant="outline" colorScheme="blue">轮廓按钮</Button>
<Button variant="outline" colorScheme="green">轮廓按钮</Button>
ghost #
jsx
<Button variant="ghost" colorScheme="blue">幽灵按钮</Button>
<Button variant="ghost" colorScheme="green">幽灵按钮</Button>
link #
jsx
<Button variant="link" colorScheme="blue">链接按钮</Button>
按钮尺寸 #
jsx
<Button size="xs">超小按钮</Button>
<Button size="sm">小按钮</Button>
<Button size="md">中等按钮(默认)</Button>
<Button size="lg">大按钮</Button>
按钮状态 #
禁用状态 #
jsx
<Button isDisabled>禁用按钮</Button>
<Button isDisabled variant="outline">禁用轮廓按钮</Button>
加载状态 #
jsx
<Button isLoading colorScheme="blue">
加载中
</Button>
<Button isLoading loadingText="提交中..." colorScheme="blue">
提交
</Button>
<Button
isLoading
loadingText="处理中..."
spinnerPlacement="start"
colorScheme="blue"
>
处理
</Button>
<Button
isLoading
loadingText="处理中..."
spinnerPlacement="end"
colorScheme="blue"
>
处理
</Button>
图标按钮 #
左侧图标 #
jsx
import { EmailIcon } from '@chakra-ui/icons'
<Button leftIcon={<EmailIcon />} colorScheme="blue">
发送邮件
</Button>
右侧图标 #
jsx
import { ArrowForwardIcon } from '@chakra-ui/icons'
<Button rightIcon={<ArrowForwardIcon />} colorScheme="blue">
继续
</Button>
使用 react-icons #
jsx
import { FiDownload, FiPlus, FiTrash } from 'react-icons/fi'
<Button leftIcon={<FiDownload />} colorScheme="blue">
下载
</Button>
<Button leftIcon={<FiPlus />} colorScheme="green">
添加
</Button>
<Button leftIcon={<FiTrash />} colorScheme="red">
删除
</Button>
IconButton 图标按钮 #
jsx
import { IconButton } from '@chakra-ui/react'
import { SearchIcon, SettingsIcon, BellIcon } from '@chakra-ui/icons'
<IconButton aria-label="搜索" icon={<SearchIcon />} />
<IconButton aria-label="设置" icon={<SettingsIcon />} />
<IconButton aria-label="通知" icon={<BellIcon />} colorScheme="blue" />
图标按钮变体 #
jsx
<IconButton aria-label="搜索" icon={<SearchIcon />} variant="outline" />
<IconButton aria-label="搜索" icon={<SearchIcon />} variant="ghost" />
<IconButton aria-label="搜索" icon={<SearchIcon />} variant="link" />
按钮组 #
jsx
import { ButtonGroup } from '@chakra-ui/react'
<ButtonGroup>
<Button colorScheme="blue">保存</Button>
<Button>取消</Button>
</ButtonGroup>
<ButtonGroup variant="outline">
<Button colorScheme="blue">左</Button>
<Button colorScheme="blue">中</Button>
<Button colorScheme="blue">右</Button>
</ButtonGroup>
<ButtonGroup size="sm" isAttached>
<Button colorScheme="blue">保存</Button>
<Button colorScheme="blue">另存为</Button>
</ButtonGroup>
圆角按钮 #
jsx
<Button borderRadius="full" colorScheme="blue">
圆角按钮
</Button>
<IconButton
aria-label="添加"
icon={<AddIcon />}
borderRadius="full"
colorScheme="blue"
/>
完整宽度 #
jsx
<Button w="full" colorScheme="blue">
全宽按钮
</Button>
自定义样式 #
jsx
<Button
bg="tomato"
color="white"
_hover={{ bg: 'tomato', opacity: 0.8 }}
>
自定义颜色
</Button>
<Button
bgGradient="linear(to-r, teal.500, green.500)"
color="white"
_hover={{
bgGradient: 'linear(to-r, teal.600, green.600)',
}}
>
渐变按钮
</Button>
实用示例 #
表单按钮组 #
jsx
function FormButtons() {
return (
<ButtonGroup spacing={4}>
<Button colorScheme="blue" type="submit">
提交
</Button>
<Button variant="outline" onClick={onCancel}>
取消
</Button>
</ButtonGroup>
)
}
社交登录按钮 #
jsx
function SocialButtons() {
return (
<VStack spacing={3} w="full">
<Button w="full" leftIcon={<FcGoogle />} variant="outline">
使用 Google 登录
</Button>
<Button w="full" leftIcon={<FaGithub />} variant="outline">
使用 GitHub 登录
</Button>
<Button w="full" leftIcon={<FaFacebook />} colorScheme="facebook">
使用 Facebook 登录
</Button>
</VStack>
)
}
危险操作按钮 #
jsx
function DangerButton({ onConfirm }) {
return (
<Button
colorScheme="red"
leftIcon={<DeleteIcon />}
onClick={onConfirm}
>
删除
</Button>
)
}
Button 属性速查表 #
| 属性 | 说明 | 值 |
|---|---|---|
| variant | 变体 | solid, outline, ghost, link |
| size | 尺寸 | xs, sm, md, lg |
| colorScheme | 颜色方案 | blue, green, red, gray… |
| isDisabled | 禁用 | true, false |
| isLoading | 加载中 | true, false |
| leftIcon | 左侧图标 | React 元素 |
| rightIcon | 右侧图标 | React 元素 |
| loadingText | 加载文字 | string |
| spinnerPlacement | 加载图标位置 | start, end |
下一步 #
现在你已经掌握了 Button 组件,接下来学习 Input 输入框,了解如何使用输入框组件!
最后更新:2026-03-28