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>

 

posted @ 2022-09-17 14:34  1024记忆  阅读(510)  评论(0编辑  收藏  举报