Vue 绑定class的几种形态
Vue 专门为 class 和 style 的 v-bind 用法提供了特殊的功能增强。
形态一:常规形态
<template>
<div :class="className"></div>
</template>
<script setup>
const className = 'text-primary'
</script>
形态二:逐个对象结构绑定
<template>
<div class="static" :class="{ active: isActive, 'text-danger': hasError }"></div>
</template>
<script setup>
const isActive = true
const hasError = false
</script>
形态三:整体对象结构绑定
<template>
<div :class="classObject"></div>
</template>
<script setup>
const classObject = {
active: true,
'text-danger': false
}
</script>
形态四:计算属性绑定
<template>
<div :class="classObject"></div>
</template>
<script setup>
import {computed, ref} from 'vue'
const isActive = ref(true)
const error = ref({
type: '',
msg: ''
})
const classObject = computed(() => ({
active: isActive.value && !error.value,
'text-danger': error.value && error.value.type === 'fatal'
}))
</script>
形态五:数组结构绑定
<template>
<div :class="[activeClass, errorClass]"></div>
</template>
<script setup>
const activeClass = 'active'
const errorClass = 'text-danger'
</script>
<template>
<div :class="[isActive ? activeClass : '', errorClass]"></div>
</template>
<script setup>
const isActive = true
const activeClass = 'active'
const errorClass = 'text-danger'
</script>
<template>
<div :class="[{ active: isActive }, errorClass]"></div>
</template>
<script setup>
const isActive = true
const errorClass = 'text-danger'
</script>

浙公网安备 33010602011771号