Switch开关 - 图1

Switch 开关

开关选择器。

何时使用

  • 需要表示开关状态/两种状态之间的切换时;
  • checkbox 的区别是,切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。

代码演示

基本用法

最简单的用法。

  1. <template>
  2. <a-switch v-model:checked="checked" />
  3. </template>
  4. <script lang="ts">
  5. import { defineComponent, ref } from 'vue';
  6. export default defineComponent({
  7. setup() {
  8. const checked = ref<boolean>(false);
  9. return {
  10. checked,
  11. };
  12. },
  13. });
  14. </script>

Switch开关 - 图2

文字和图标

带有文字和图标。

  1. <template>
  2. <div>
  3. <a-switch checked-children="开" un-checked-children="关" v-model:checked="checked1" />
  4. <br />
  5. <a-switch checked-children="1" un-checked-children="0" v-model:checked="checked2" />
  6. <br />
  7. <a-switch v-model:checked="checked3">
  8. <template #checkedChildren><check-outlined /></template>
  9. <template #unCheckedChildren><close-outlined /></template>
  10. </a-switch>
  11. </div>
  12. </template>
  13. <script lang="ts">
  14. import { defineComponent, reactive, toRefs } from 'vue';
  15. import { CheckOutlined, CloseOutlined } from '@ant-design/icons-vue';
  16. export default defineComponent({
  17. setup() {
  18. const state = reactive({
  19. checked1: true,
  20. checked2: false,
  21. checked3: false,
  22. });
  23. return { ...toRefs(state) };
  24. },
  25. components: {
  26. CheckOutlined,
  27. CloseOutlined,
  28. },
  29. });
  30. </script>

Switch开关 - 图3

加载中

标识开关操作仍在执行中。

  1. <template>
  2. <div>
  3. <a-switch loading v-model:checked="checked1" />
  4. <br />
  5. <a-switch size="small" loading v-model:checked="checked2" />
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { defineComponent, reactive, toRefs } from 'vue';
  10. export default defineComponent({
  11. setup() {
  12. const state = reactive({
  13. checked1: true,
  14. checked2: false,
  15. });
  16. return { ...toRefs(state) };
  17. },
  18. });
  19. </script>

Switch开关 - 图4

不可用

Switch 失效状态。

  1. <template>
  2. <div>
  3. <a-switch v-model:checked="checked" :disabled="disabled" style="margin-bottom: 5px" />
  4. <br />
  5. <a-button type="primary" @click="onToggle">Toggle disabled</a-button>
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { defineComponent, ref } from 'vue';
  10. export default defineComponent({
  11. setup() {
  12. const checked = ref<boolean>(true);
  13. const disabled = ref<boolean>(true);
  14. const onToggle = () => {
  15. disabled.value = !disabled.value;
  16. };
  17. return {
  18. checked,
  19. disabled,
  20. onToggle,
  21. };
  22. },
  23. });
  24. </script>

Switch开关 - 图5

两种大小

size="small" 表示小号开关。

  1. <template>
  2. <div>
  3. <a-switch v-model:checked="checked1" />
  4. <br />
  5. <a-switch size="small" v-model:checked="checked2" />
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { defineComponent, reactive, toRefs } from 'vue';
  10. export default defineComponent({
  11. setup() {
  12. const state = reactive({
  13. checked1: true,
  14. checked2: false,
  15. });
  16. return { ...toRefs(state) };
  17. },
  18. });
  19. </script>

API

参数说明类型默认值
autofocus组件自动获取焦点booleanfalse
checked(v-model)指定当前是否选中booleanfalse
checkedChildren选中时的内容string|slot
defaultChecked初始是否选中booleanfalse
disabled是否禁用booleanfalse
loading加载中的开关booleanfalse
size开关大小,可选值:default smallstringdefault
unCheckedChildren非选中时的内容string|slot

事件

事件名称说明回调参数
change变化时回调函数Function(checked:Boolean, event: Event)
click点击时回调函数Function(checked: boolean, event: Event)

方法

名称描述
blur()移除焦点
focus()获取焦点