按钮
按钮允许用户通过单击执行操作和做出选择。
按钮传达用户可以执行的操作。它们通常放置在用户界面的各处,例如:
- 模态窗口
- 表单
- 卡片
- 工具栏
基本按钮
Button
组件有三种变体:文本(默认)、容器和轮廓。
您可以使用 disableElevation
属性删除阴影。
处理点击事件
所有组件都接受 onClick
处理程序,该处理程序应用于根 DOM 元素。
<Button
onClick={() => {
alert('clicked');
}}
>
Click me
</Button>
请注意,文档 避免 在组件的 API 部分提及原生属性(有很多)。
颜色
带有图标和标签的按钮
有时您可能希望某些按钮带有图标,以增强应用程序的 UX,因为我们识别徽标比纯文本更容易。例如,如果您有一个删除按钮,您可以用垃圾桶图标标记它。
尺寸
对于较大或较小的图标按钮,请使用 size
属性。
颜色
使用 color
属性将主题颜色调色板应用于组件。
加载中
从 v6.4.0 开始,使用 loading
属性将图标按钮设置为加载状态并禁用交互。
徽标
您可以使用 Badge
组件向 IconButton
添加徽标。
文件上传
要创建文件上传按钮,请使用 component="label"
将按钮变成标签,然后创建一个视觉上隐藏的类型为 file
的输入。
加载中
从 v6.4.0 开始,使用 loading
属性将按钮设置为加载状态并禁用交互。
切换加载开关以查看不同状态之间的过渡。
🎨 如果您正在寻找灵感,可以查看 MUI Treasury 的自定义示例。
复杂按钮
文本按钮、容器按钮、浮动操作按钮和图标按钮都构建在同一个组件之上:ButtonBase
。您可以利用这个较低级别的组件来构建自定义交互。
第三方路由库
一个常见的用例是在客户端执行导航,而无需 HTTP 服务器往返。ButtonBase
组件提供了 component
属性来处理此用例。这是一个更详细的指南。
局限性
禁止光标
ButtonBase 组件在禁用的按钮上设置 pointer-events: none;
,这会阻止禁用光标的出现。
如果您希望使用 not-allowed
,您有两个选择
- 仅 CSS。您可以删除
<button>
元素禁用状态下的 pointer-events 样式
.MuiButtonBase-root:disabled {
cursor: not-allowed;
pointer-events: auto;
}
但是
- 当您需要在禁用的元素上显示工具提示时,您应该添加回
pointer-events: none;
。 - 如果您渲染的不是按钮元素,例如链接
<a>
元素,则光标不会更改。
- DOM 更改。您可以包装按钮
<span style={{ cursor: 'not-allowed' }}>
<Button component={Link} disabled>
disabled
</Button>
</span>
这具有支持任何元素的优势,例如链接 <a>
元素。
无样式
使用 Base UI Button 完全拥有组件的设计,无需覆盖 Material UI 或 Joy UI 样式。此无样式版本的组件是需要重度自定义和更小捆绑包大小的理想选择。