FxBtn 按钮
常用的操作按钮。自实现、不依赖任何 UI 框架,额外内置点击防抖/节流与自动 loading。
FxBtn 属于 @fx/components(UI 框架无关的通用组件)。
基础用法
使用 type、plain、round、dashed 和 circle 来定义按钮的样式。
禁用状态
按钮不可用状态。
使用 disabled 属性来定义按钮是否可用,它接受一个 Boolean 值。
链接按钮
没有边框和背景色的链接样式按钮。使用 link 属性启用,配合 type 可设置链接按钮的主题色。
文字按钮
没有边框的文字按钮,hover 时显示浅色背景。使用 text 属性启用,配合 bg 可常驻背景色。
图标按钮
带图标的按钮可增强辨识度(有文字)或节省空间(无文字)。
使用 icon 插槽(或 icon 属性)来添加图标。自定义图标同样适用。
按钮组
以按钮组的方式出现,可用于将一系列相似的操作组合在一起。
可以使用 direction 属性控制排列方向。
使用 <FxButtonGroup> 标签来分组你的按钮。
加载状态
点击按钮来加载数据,并向用户返回加载状态。
将 loading 属性设置为 true 即可显示加载状态。
TIP
你可以使用 loading 插槽或 loadingIcon 属性来自定义你的加载组件。
ps:loading 插槽的优先级比 loadingIcon 更高。
不同尺寸
除了默认大小外,Button 组件还提供了几种额外的尺寸,以便在不同场景下使用。
使用 size 属性来设置 large、small 等额外尺寸。
自定义标签
你可以自定义组件的元素标签,例如 button、div、a、router-link、nuxt-link。
自定义颜色
你可以自定义按钮颜色。
我们会自动计算 hover 颜色与 active 颜色。
color 属性可以用于 link 与 text 按钮。
防抖 / 节流
设置 throttle(毫秒)启用点击防抖/节流,防止重复提交(FxBtn 特有能力)。连续快速点击下面的按钮体验差异:
mode="debounce"(默认):连续点击只在停止throttlems 后触发最后一次mode="throttle":第一次点击立即触发,等待时间内再次点击不会触发throttle=0(默认):不启用防抖/节流
触发期间按钮自动进入 loading,冷却后恢复,与外部 :loading 取或合并。
| 模式 | Loading 表现 |
|---|---|
throttle=0 | 不产生内部 loading,完全由外部 :loading 控制 |
| 节流模式 | 点击后立即 loading,冷却期结束后自动取消 |
| 防抖模式 | 连续点击期间不 loading,最后一次实际执行时才 loading |
Button API
FxBtn Attributes
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| size | 按钮尺寸 | 'large' | 'default' | 'small' | — |
| type | 按钮类型,设置 color 时以 color 为准 | 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | '' | — |
| plain | 是否为朴素按钮 | boolean | false |
| text | 是否为文字按钮 | boolean | false |
| bg | 是否显示文字按钮的背景色 | boolean | false |
| link | 是否为链接按钮 | boolean | false |
| round | 是否为圆角按钮 | boolean | false |
| circle | 是否为圆形按钮 | boolean | false |
| dashed | 是否为虚线按钮 | boolean | false |
| loading | 是否为加载中状态 | boolean | false |
| loading-icon | 自定义加载图标。字符串为 IconString 类型(即 FxIcon 图标名,如 ep:edit、ant-design:home、svg:xxx),亦可传组件 | string / Component | Loading |
| loading-duration | 加载图标旋转一圈时长,number 与纯数字字符串(如 "0.5")按秒、其余 string 原样作 CSS 时长(如 "0.5s"、"500ms"),对三种 loading 来源统一生效 | number / string | 1.7 |
| disabled | 是否禁用 | boolean | false |
| icon | 图标。字符串为 IconString 类型(即 FxIcon 图标名,如 ep:edit、ant-design:home、svg:xxx),亦可传组件 | string / Component | — |
| autofocus | 原生 button 的 autofocus 属性 | boolean | false |
| native-type | 原生 button 的 type 属性 | 'button' | 'submit' | 'reset' | button |
| auto-insert-space | 自动在两个中文字符之间插入空格(仅在文本长度为 2 且都是中文时生效) | boolean | false |
| color | 自定义按钮颜色,自动计算 hover 和 active 颜色。支持 link/text | string | — |
| dark | 暗色模式,自动将 color 转换为暗色模式颜色 | boolean | false |
| tag | 自定义元素标签 | string / Component | button |
| throttle | 防抖/节流等待时间(毫秒),0 表示不启用(FxBtn 特有) | number | 0 |
| mode | 防抖/节流模式(FxBtn 特有) | 'debounce' | 'throttle' | debounce |
FxBtn Slots
| 名称 | 说明 |
|---|---|
| default | 自定义默认内容 |
| loading | 自定义加载组件 |
| icon | 自定义图标组件 |
FxBtn Exposes
| 名称 | 说明 | 类型 |
|---|---|---|
| ref | 按钮 html 元素 | Ref<HTMLButtonElement> |
| size | 按钮尺寸 | ComputedRef<'' | 'small' | 'default' | 'large'> |
| type | 按钮类型 | ComputedRef<'' | 'default' | 'primary' | 'success' | 'warning' | 'info' | 'danger'> |
| disabled | 按钮是否禁用 | ComputedRef<boolean> |
| shouldAddSpace | 是否在两个中文字符之间加空格 | ComputedRef<boolean> |
ButtonGroup API
FxButtonGroup Attributes
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| size | 控制组内按钮尺寸 | 'large' | 'default' | 'small' | — |
| type | 控制组内按钮类型 | 'primary' | 'success' | 'warning' | 'danger' | 'info' | — |
| direction | 排列方向 | 'horizontal' | 'vertical' | horizontal |
FxButtonGroup Slots
| 名称 | 说明 | 子标签 |
|---|---|---|
| default | 自定义按钮组内容 | Button |
