Switch 开关
表示两种相互对立的状态间的切换,多用于触发「开/关」。
基础用法
绑定 v-model 到一个 Boolean 类型的变量。 可以使用 --vk-switch-on-color 属性与 --vk-switch-off-color 属性来设置开关的背景色。
<script setup>
import { ref } from 'vue'
import Switch from '@/components/Switch/Switch.vue'
const test = ref(false)
</script>
<template>
<Switch v-model="test" />
</template>禁用状态
设置 disabled 属性,接受一个 boolean,设置true即可禁用。
禁用:
<script setup>
import { ref } from 'vue'
import Switch from '@/components/Switch/Switch.vue'
const test = ref(false)
const test2 = ref(false)
</script>
<template>
正常:<Switch v-model="test" /> <br/>
禁用:<Switch v-model="test2" disabled/>
</template>不同尺寸
设置 size 属性,接受large / small,呈现不同的尺寸。
<script setup>
import { ref } from 'vue'
import Switch from '@/components/Switch/Switch.vue'
const test = ref(false)
</script>
<template>
<div class="switch-size-container">
<Switch v-model="test" size="large"/>
<Switch v-model="test"/>
<Switch v-model="test" size="small"/>
</div>
</template>
<style scoped>
.switch-size-container {
display: flex;
align-items: center;
.vk-switch {
margin-right: 10px;
}
}
</style>支持自定义 value 类型
你可以设置 active-value 和 inactive-value 属性, 它们接受 boolean | string | number 类型的值。
model-value: right
<script setup>
import { ref } from 'vue'
import Switch from '@/components/Switch/Switch.vue'
const test = ref('right')
</script>
<template>
<Switch v-model="test" activeValue="right" inactiveValue="wrong"/>
<h4>model-value: {{test}}</h4>
</template>文字描述
使用 active-text 属性与 inactive-text 属性来设置开关的文字描述。
OFF
<script setup>
import { ref } from 'vue'
import Switch from '@/components/Switch/Switch.vue'
const test = ref(false)
</script>
<template>
<Switch v-model="test" activeText="ON" inactiveText="OFF"/>
</template>React 用法
tsx
import { useState } from 'react'
import { Switch } from '@bobocn/element/react'
import '@bobocn/element/style.css'
// 基础用法
function App() {
const [checked, setChecked] = useState(false)
return <Switch modelValue={checked} onChange={setChecked} />
}
// 禁用状态
<Switch modelValue={false} disabled />
// 不同尺寸
<Switch modelValue={checked} size="large" onChange={setChecked} />
<Switch modelValue={checked} size="small" onChange={setChecked} />
// 文字描述
<Switch modelValue={checked} activeText="开启" inactiveText="关闭" onChange={setChecked} />
// 自定义 value 类型
<Switch
modelValue={checked}
activeValue="yes"
inactiveValue="no"
onChange={setChecked}
/>API
属性 (Attributes)
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelValue / v-model | 绑定值 | boolean | string | number | false |
| disabled | 是否禁用 | boolean | false |
| activeText | 打开时的文字描述 | string | — |
| inactiveText | 关闭时的文字描述 | string | — |
| activeValue | 打开时的值 | boolean | string | number | true |
| inactiveValue | 关闭时的值 | boolean | string | number | false |
| name | 对应原生 input name 属性 | string | — |
| id | 对应原生 input id 属性 | string | — |
| size | 开关尺寸 | 'large' | 'small' | — |
事件 (Events)
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| update:modelValue | 绑定值更新时触发 | (value: boolean | string | number) => void |
| change | 状态发生变化时触发 | (value: boolean | string | number) => void |
