본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Switch 스위치

원문 보기 위키 갱신

두 상태를 오가며 전환하는 스위치 컴포넌트예요.

출처: 문서

본문

켜기/끄기 전환 컴포넌트예요.

언제 사용하나요?

활성화/비활성화처럼 두 상태를 오가며 제어해야 할 때 사용해요.

크기

:::demo sm | md | lg 중 고를 수 있고, 기본값은 md예요.

<template>
  <d-switch v-model="checkedSmall" size="sm"></d-switch>
  <d-switch v-model="uncheckedMiddle"></d-switch>
  <d-switch v-model="checkedLarge" size="lg"></d-switch>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const checkedSmall = ref(true);
    const uncheckedMiddle = ref(true);
    const checkedLarge = ref(true);
    return {
      checkedSmall,
      uncheckedMiddle,
      checkedLarge,
    };
  },
});
</script>

<style scoped lang="scss">
.devui-switch:not(:last-of-type) {
  margin-right: 5px;
}
</style>

:::

비활성화

:::demo 스위치를 비활성화할지 여부를 정할 수 있고, 기본값은 false예요.

<template>
  <d-switch class="mr-1" v-model="checkedDisabled" :disabled="true"></d-switch>
  <d-switch v-model="checkedDisabled1" :disabled="true"></d-switch>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const checkedDisabled = ref(true);
    const checkedDisabled1 = ref(false);
    return {
      checkedDisabled,
      checkedDisabled1,
    };
  },
});
</script>

:::

스타일 커스터마이즈

:::demo 텍스트 설명/아이콘을 넣을 수 있어요

<template>
  <div>
    <d-switch v-model="checkedColor" color="#FECC55"></d-switch>
    <d-switch color="#50D4AB" v-model="checkedIcon">
      <template #checkedContent>
        <i class="icon-right"></i>
      </template>
      <template #uncheckedContent>
        <i class="icon-error"></i>
      </template>
    </d-switch>
    <d-switch v-model="checkedSmContent" size="sm">
      <template #checkedContent>开</template>
      <template #uncheckedContent>关</template>
    </d-switch>
    <d-switch v-model="checkedContent">
      <template #checkedContent>开</template>
      <template #uncheckedContent>关</template>
    </d-switch>
    <d-switch v-model="checkedLgContent" size="lg">
      <template #checkedContent>开</template>
      <template #uncheckedContent>关</template>
    </d-switch>
  </div>

</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const checkedColor = ref(true);
    const checkedContent = ref(false);
    const checkedSmContent = ref(false);
    const checkedLgContent = ref(false);
    const checkedIcon = ref(true);
    return {
      checkedColor,
      checkedContent,
      checkedSmContent,
      checkedLgContent,
      checkedIcon,
    };
  },
});
</script>

:::

바인딩 값 커스터마이즈

:::demo switch가 켜지고 꺼질 때의 값을 직접 정할 수 있어요. 켜졌을 때는 active-value, 꺼졌을 때는 inactive-value가 돼요

<template>
  <d-switch class="mr-1" v-model="activeValue1" active-value="打开" inactive-value="关闭"></d-switch>
  <d-switch class="mr-1" v-model="activeValue2" :active-value="1" :inactive-value="0"></d-switch>
  <d-switch v-model="activeValue3" :active-value="true" :inactive-value="false"></d-switch>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const activeValue1 = ref('打开');
    const activeValue2 = ref(0);
    const activeValue3 = ref(true);
    return {
      activeValue1,
      activeValue2,
      activeValue3,
    };
  },
});
</script>

:::

Switch 파라미터

파라미터 타입 기본값 설명 Demo 링크
v-model `string\ number |boolean` -- 바인딩 값
size ISwitchSize md 선택, 스위치 크기 size
color string -- 선택, 스위치가 켜졌을 때의 커스텀 색 스타일 커스터마이즈
disabled boolean false 선택, 스위치 비활성 여부 기본 사용법
active-value `string\ number |boolean` true 선택, 스위치가 켜졌을 때의 값
inactive-value `string\ number |boolean` true 선택, 스위치가 꺼졌을 때의 값

Switch 이벤트

이벤트 타입 설명
change EventEmitter<boolean> 선택, 켜지면 true를, 꺼지면 false를 반환해요

Switch 슬롯

이름 설명 파라미터 Demo 링크
checkedContent 켜진 상태의 문구 -- 스타일 커스터마이즈
uncheckedContent 꺼진 상태의 문구 -- 스타일 커스터마이즈

Switch 타입 정의

ISwitchSize

type ISwitchSize = 'sm' | 'md' | 'lg';

더 알아보기 (Learn more)

d-switch는 설정 화면의 기능 토글에 가장 많이 쓰이는 컴포넌트예요. active-value/inactive-value를 지정하면 boolean 대신 문자열이나 숫자 상태를 그대로 모델에 담을 수 있어요.