Компонент Switch в Naive UI представляет собой переключатель состояния «включено/выключено». Он является частью набора интерактивных элементов управления и широко применяется для управления булевыми значениями в интерфейсе.
import { createApp } from 'vue'
import { NSwitch } from 'naive-ui'
const app = createApp({
data() {
return {
value: false
}
},
template: `<n-switch v-model:value="value" />`
})
app.mount('#app')
В этом примере используется двусторонняя привязка через
v-model:value, что позволяет автоматически
синхронизировать состояние переключателя с переменной
value. Когда пользователь изменяет положение переключателя,
значение переменной обновляется автоматически.
value / v-model:value –
текущее состояние переключателя
(true/false).disabled – блокировка переключателя,
запрещает взаимодействие с ним.size – размер компонента. Возможные
значения: "small", "medium",
"large".loading – отображение состояния
загрузки; переключатель не реагирует на клики.checked-value /
unchecked-value – позволяют задать собственные
значения для состояния true и false.Пример использования с нестандартными значениями:
<n-switch
v-model:value="value"
:checked-value="'yes'"
:unchecked-value="'no'"
/>
В данном случае при включении переключателя переменной присваивается
'yes', а при выключении – 'no'.
checked-color – цвет переключателя в
состоянии «включено».unchecked-color – цвет переключателя в
состоянии «выключено».border-color – цвет границы.knob-color – цвет ползунка.bordered – включение/отключение
отображения границы.Пример кастомизации внешнего вида:
<n-switch
v-model:value="value"
checked-color="#4caf50"
unchecked-color="#f44336"
knob-color="#ffffff"
/>
Компонент Switch поддерживает несколько событий:
on-update:value – вызывается при
изменении состояния переключателя. Используется при управлении через
v-model.on-change – срабатывает при каждом
изменении состояния.Пример обработки события on-change:
<n-switch
v-model:value="value"
@change="handleChange"
/>
methods: {
handleChange(newValue) {
console.log('Новое состояние:', newValue)
}
}
Событие on-change удобно использовать для выполнения
побочных действий, таких как сохранение состояния на сервер или
включение/выключение других элементов интерфейса.
Компонент поддерживает настройку размера через
свойство size. На практике часто используется комбинация с
динамическими классами для подстраивания интерфейса под разные
экраны:
<n-switch
v-model:value="value"
:size="isMobile ? 'small' : 'medium'"
/>
Дополнительно можно использовать стили через CSS-переменные, которые предоставляет Naive UI:
.n-switch {
--n-switch-checked-color: #4caf50;
--n-switch-unchecked-color: #f44336;
}
Switch может использоваться в составе NForm для
управления полями формы. Важно корректно привязывать его к модели формы
через v-model:
import { NForm, NFormItem, NSwitch, NButton } from 'naive-ui'
<template>
<n-form :model="form">
<n-form-item label="Активен">
<n-switch v-model:value="form.active" />
</n-form-item>
<n-button @click="submit">Отправить</n-button>
</n-form>
</template>
<script>
export default {
data() {
return {
form: {
active: false
}
}
},
methods: {
submit() {
console.log(this.form)
}
}
}
</script>
Такой подход обеспечивает синхронизацию состояния переключателя с моделью формы и позволяет легко отправлять данные на сервер.
<n-switch
v-model:value="value"
:disabled="!isEditable"
/>
Компонент Switch в Naive UI — мощный инструмент для управления булевыми состояниями, который поддерживает полную кастомизацию внешнего вида, интеграцию с формами и реактивные события. Его простая конфигурация и гибкие свойства делают его удобным для любых приложений на Vue 3 с Naive UI.