React 组件

UGSwitch 开关

用于立即切换两个互斥状态,支持受控与非受控、尺寸、标签、加载、切换守卫和原生表单提交。

导入方式

按需从包入口导入组件,并在应用入口引入一次样式文件。

tsx
import { UGSwitch } from '@ug666/ui-react'

基础用法

标签与控件形成同一点击区域;没有标签时应提供 aria-label。

标签位置

根据表单排版将标签放在轨道左侧或右侧。

状态内容与自定义动作

状态文本可放在轨道两侧或内部;图标和滑块动作内容分别承担说明与反馈。

尺寸

使用真实尺寸属性,不通过 transform 缩放控件。

状态

禁用和加载会阻止重复切换;aria-invalid 同步无障碍语义和可见错误边框。

异步切换守卫

beforeChange 适合权限确认或保存前校验;成功后才提交新状态。

原生表单与重置

设置 name 后以原生 checkbox 语义提交;reset 恢复 defaultChecked。

属性

属性类型默认值说明
checked / defaultCheckedboolean— / false受控状态或非受控初始状态。
onCheckedChange(checked: boolean) => void状态成功切换后触发。
beforeChange(next) => boolean | Promise<boolean>切换前守卫;返回 false 或抛错会取消切换。
loadingbooleanfalse显示处理中状态并阻止重复操作。
labelstring可点击的开关标签。
labelPlacement'left' | 'right''right'标签位置。
widthnumber | string随尺寸计算设置轨道宽度,并保留可操作的最小宽度。
activeText / inactiveTextstring在轨道两侧或内部显示开启、关闭状态文本。
activeIcon / inactiveIconReactNode状态图标,存在时覆盖同状态文本。
inlinePromptbooleanfalse将当前状态文本或图标放入轨道。
activeAction / inactiveActionReactNode自定义滑块内部的开启与关闭内容。
size'sm' | 'default' | 'lg'全局配置 / default开关尺寸。
disabledboolean全局配置 / false禁用切换。
aria-invalid原生 ARIA 属性表单校验失败时同步无障碍语义和危险色轨道边框。
name / value / form原生表单属性— / on / —将开关状态同步为原生 checkbox 提交。
原生属性 / refButtonHTMLAttributes / Ref<HTMLButtonElement>透传到 role=switch 的真实按钮。