3.3 KiB
3.3 KiB
name, description, user-invocable
| name | description | user-invocable |
|---|---|---|
| arco-vue-switch | Arco Design Vue 开关 Switch 组件参考。用于 Vue 3、`@arco-design/web-vue`、`<a-switch>`、属性、事件、插槽、示例和实现细节。 | false |
开关 Switch
简介
开关的基本用法。
基本用法
<template>
<a-switch />
</template>
API
<switch> 属性
| 参数名 | 描述 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| model-value (v-model) | 绑定值 | string|number|boolean |
- |
|
| default-checked | 默认选中状态(非受控状态) | boolean |
false |
|
| disabled | 是否禁用 | boolean |
false |
|
| loading | 是否为加载中状态 | boolean |
false |
|
| type | 开关的类型 | 'circle' | 'round' | 'line' |
'circle' |
|
| size | 开关的大小 | 'small' | 'medium' |
'medium' |
|
| checked-value | 选中时的值 | string|number|boolean |
true |
2.12.0 |
| unchecked-value | 未选中时的值 | string|number|boolean |
false |
2.12.0 |
| checked-color | 选中时的开关颜色 | string |
- |
2.12.0 |
| unchecked-color | 未选中时的开关颜色 | string |
- |
2.12.0 |
| before-change | switch 状态改变前的钩子, 返回 false 或者返回 Promise 且被 reject 则停止切换。 | ( newValue: string | number | boolean) => Promise<boolean | void> | boolean | void |
- |
2.37.0 |
| checked-text | 打开状态时的文案(type='line'和size='small'时不生效) |
string |
- |
2.45.0 |
仅列出常用项,低频属性按需查阅官方 API。
<switch> 事件
| 事件名 | 描述 | 参数 |
|---|---|---|
| change | 值改变时触发 | value: boolean | string | numberev: Event |
| focus | 组件获得焦点时触发 | ev: FocusEvent |
| blur | 组件失去焦点时触发 | ev: FocusEvent |
<switch> 插槽
| 插槽名 | 描述 | 参数 |
|---|---|---|
| checked-icon | 打开状态时,按钮上的图标 | - |
| unchecked-icon | 关闭状态时,按钮上的图标 | - |
| checked | 打开状态时的文案(type='line'和size='small'时不生效) |
- |
| unchecked | 关闭状态时的文案(type='line'和size='small'时不生效) |
- |
常用模式
- 开关类型:开关分为
circle- 圆形(默认)、round- 圆角、line- 线性三种类型。 - 开关尺寸:开关分为
small、medium两种尺寸。 - 禁用状态:禁用开关。
- 自定义开关的颜色:通过
checked-color和unchecked-color可以自定义开关的颜色。 - 自定义开关的值:通过
checked-value和unchecked-value可以自定义开关的值。 - 切换拦截:设置
beforeChange函数,函数的返回值将用于判断是否阻止切换。 - 加载中状态:通过设置
loading使开关处于加载中状态,此时开关不可点击。 - 自定义文案:自定义开关的打开/关闭状态的文字。
最佳实践
- 新代码优先使用 Vue 3、Composition API 和
<script setup lang="ts">。 - 模板属性使用 kebab-case,事件使用
@event-name,插槽使用#slot-name。 - 不要套用 React 专属 API,例如 JSX children、
Component.Sub或Form.useForm。 - 需要进入表单校验或提交流程的控件,优先放在
a-form-item中并绑定明确的field。 - 输入值优先使用
v-model;范围、弹窗类状态使用组件文档中的命名v-model:*。