组件 · 数据录入
Switch 开关
布尔开关;支持受控/非受控 checked。
使用建议
- 避免:用 Switch 代替 Checkbox 做多选
- 限制:属性与导出以 @selrux/ui 对应子路径 d.ts/源码为准,禁止臆造
引入
tsx
import { Switch } from '@selrux/ui/switch';演练场
调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。
代码演示
基础用法
label 为可见名称。
轨道文字
checkedText / uncheckedText 显示在轨道内。
状态与尺寸
disabled 与 size 六档。
API
属性覆盖:示例用到 7 / 7 个自有属性(100%)
由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。
Switch
添加尺寸、静态类名与可选轨道文字,不复制选中或表单状态。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
checked | 当前二态值。组件生命周期内不得切换控制模式。 | boolean | - |
defaultChecked | 受控时禁止初始值。 | boolean | - |
label | 稳定的设置名称;不要在标签里嵌套链接或其他交互控件。 | ReactNode | - |
onCheckedChange | 原生 onChange 未取消时通知新值;reset 不触发此回调。 | ((checked: boolean) => void) | - |
size | 显式尺寸优先于 Provider,最终回退 md。 | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | - |
checkedText | 开启时轨道内的文字;仅作视觉说明,仍需稳定的 label 或 ARIA 名称。 | string | - |
uncheckedText | 关闭时轨道内的文字;宽度按两态较长文案预留,避免切换跳动。 | string | - |
children | input 不接受子节点;文字使用 label 或外部关联标签。 | undefined | - |
另有 302 项原生属性与事件继承自 HTMLAttributes / InputHTMLAttributes,原样透传。
导出类型:SwitchControlledProps、SwitchProps、SwitchSize、SwitchUncontrolledProps、SwitchVisualProps
无障碍
摘自源码 JSDoc。
Switch.label:稳定的设置名称;不要在标签里嵌套链接或其他交互控件。Switch.checkedText:开启时轨道内的文字;仅作视觉说明,仍需稳定的 label 或 ARIA 名称。Switch.children:input 不接受子节点;文字使用 label 或外部关联标签。