组件 · 数据录入

Switch 开关

布尔开关;支持受控/非受控 checked。

入口 @selrux/ui/switch · 源码 src/components/switch/index.ts · 1 个组件 · 发布状态 preview

使用建议

  • 避免:用 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-
childreninput 不接受子节点;文字使用 label 或外部关联标签。undefined-

另有 302 项原生属性与事件继承自 HTMLAttributes / InputHTMLAttributes,原样透传。

导出类型:SwitchControlledProps、SwitchProps、SwitchSize、SwitchUncontrolledProps、SwitchVisualProps

无障碍

摘自源码 JSDoc。

  • Switch.label:稳定的设置名称;不要在标签里嵌套链接或其他交互控件。
  • Switch.checkedText:开启时轨道内的文字;仅作视觉说明,仍需稳定的 label 或 ARIA 名称。
  • Switch.children:input 不接受子节点;文字使用 label 或外部关联标签。