计算属性
类似于一个方法, 可以返回一个结果, 用于显示到模板上
与方法不一样的是, 计算属性有缓存功能, 前提是其中使用了
响应式对象
<script setup>
import { reactive, computed } from 'vue'
const author = reactive({
name: 'John Doe',
books: [
'Vue 2 - Advanced Guide',
'Vue 3 - Basic Guide',
'Vue 4 - The Mystery'
]
})
// 一个计算属性 ref
const publishedBooksMessage = computed(() => {
return author.books.length > 0 ? 'Yes' : 'No'
})
</script>
<template>
<p>Has published books:</p>
<span>{{ publishedBooksMessage }}</span>
</template>
绑定 html class
- 使用
:class
来决定class
属性的值, 通过给:class
传递一个决定true
或false
的对象, 来决定是否配置该class
如上, 对象<script setup> const isActive = ref(true) </script> <template> <div class="static" :class="{ active: isActive }"></div> </template>
isActive
是true
, 表示传递该属性, 因此, 渲染的结果会是class
属性支持多个<div class="static active"></div>
:class
还支持更丰富的配置- 绑定一个复合的配置
<script setup> const classObject = reactive({ active: true, "test-danger": false }) </script> <template> <div :class="classObject"></div> </template>
- 绑定计算属性
const isActive = ref(true) const error = ref(null) const classObject = computed(() => { active: isActive.value && !error.value, 'text-danger': error.value && error.value.type === 'fatal' })
- 绑定数组
const activeClass = ref('active') const errorClass = ref('text-danger') ... <div :class="[activeClass, errorClass]"></div>
- 绑定一个复合的配置
绑定内嵌样式
这个与绑定
class
类似, 不一样的是, 绑定的对象, 不是用来决定是否显示
, 不存在是否显示了, 而是直接决定值
- 绑定对象
const activeColor = ref('red') const fontSize = ref(30) ... <div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
- 绑定数组
<div :style="[baseStyles, overridingStyles]"></div>