Skip to content

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-valueinactive-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 | numberfalse
disabled是否禁用booleanfalse
activeText打开时的文字描述string
inactiveText关闭时的文字描述string
activeValue打开时的值boolean | string | numbertrue
inactiveValue关闭时的值boolean | string | numberfalse
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

基于 MIT 许可发布