Компонент Switch в библиотеке Element
Plus используется для создания переключателей состояния —
включено/выключено. Он является аналогом стандартного HTML-элемента
<input type="checkbox">, но предоставляет расширенные
возможности кастомизации и интеграции с Vue 3.
<template>
<el-switch v-model="isActive"></el-switch>
</template>
<script setup>
import { ref } from 'vue';
const isActive = ref(false);
</script>
true и
false.model-value: текущее состояние переключателя
(true/false).
active-value / inactive-value: задают значения для активного и неактивного состояния.
<el-switch
v-model="status"
:active-value="1"
:inactive-value="0">
</el-switch>active-text / inactive-text: текст, отображаемый внутри переключателя для соответствующих состояний.
active-color / inactive-color: задают цвет фона переключателя при активном и неактивном состоянии.
disabled: делает переключатель неактивным.
width: ширина компонента в пикселях. По умолчанию 40px.
name в скрытый <input>.Вызывается при изменении состояния:
<el-switch
v-model="isActive"
@change="handleChange">
</el-switch>
<script setup>
function handleChange(value) {
console.log('Новое состояние:', value);
}
</script>
Вызывается при каждом клике на переключатель, аналогично
v-model:
<el-switch
:model-value="isActive"
@input="val => isActive = val">
</el-switch>
Событие клика на переключатель, не меняющее значение:
<el-switch @click="handleClick"></el-switch>
Switch поддерживает гибкую настройку внешнего вида:
Цвета: через active-color и
inactive-color.
<el-switch
v-model="isActive"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>Текст: можно добавить подписи состояния через
active-text и inactive-text.
Размер: изменяется через CSS или атрибут
width.
.el-switch {
width: 60px;
height: 30px;
}
Switch можно использовать внутри <el-form> для
привязки значений формы:
<el-form :model="form">
<el-form-item label="Статус">
<el-switch v-model="form.status"></el-switch>
</el-form-item>
</el-form>
<script setup>
const form = reactive({
status: true
});
</script>
Switch может быть не только булевым. Например, хранить строку или число:
<el-switch
v-model="role"
active-value="admin"
inactive-value="user">
</el-switch>
role будет принимать значения
"admin" или "user" вместо
true/false.Добавление атрибута loading позволяет заблокировать
переключатель и показать анимацию:
<el-switch
v-model="isActive"
:loading="isLoading">
</el-switch>
<script setup>
const isActive = ref(false);
const isLoading = ref(true);
</script>
Space и
Enter.disabled и loading предотвращает
случайное изменение значения.<el-switch
v-model="status"
active-color="#409EFF"
inactive-color="#C0C4CC"
active-text="Вкл"
inactive-text="Выкл"
:width="60"
@change="onSwitchChange">
</el-switch>
<script setup>
import { ref } from 'vue';
const status = ref(false);
function onSwitchChange(val) {
console.log('Переключатель изменён:', val);
}
</script>
Этот пример демонстрирует комплексную настройку Switch с кастомными цветами, текстом, шириной и обработкой события изменения состояния.
Switch в Element Plus сочетает простоту использования с мощными возможностями кастомизации, интеграцией с формами и гибкой настройкой реактивных значений, что делает его универсальным инструментом для современных интерфейсов на Vue 3.