计算属性
在 Vue3 中,计算属性的用法和 Vue2 基本上是一样的,但是在性能上有了一些改进。Vue3 中计算属性是通过computed
函数来创建的,计算属性的值会在相关依赖发生改变时自动更新。与 Vue2 相比,Vue3 的计算属性在一些场景下会更高效和更灵活。
<template>
<div>
<p>{{ fullName }}</p>
<p>{{ reversedMessage }}</p>
</div>
</template>
<script>
import { computed } from 'vue';
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe',
message: 'Hello Vue3!'
};
},
computed: {
fullName() {
return this.firstName + ' ' + this.lastName;
},
reversedMessage() {
return this.message.split('').reverse().join('');
}
}
};
</script>
在这个示例中,我们定义了两个计算属性fullName
和reversedMessage
,分别用来计算全名和翻转消息。当firstName
、lastName
或message
发生改变时,这两个计算属性的值会自动更新。
与 Vue2 相比,Vue3 中的计算属性使用了函数的形式进行定义,而不再使用对象的形式。这样可以更清晰地区分出数据和计算属性的逻辑,使得代码更易读、更易维护。此外,由于 Vue3 在响应性系统上进行了优化,计算属性的性能有了一定的提升。
总的来说,Vue3 的计算属性在用法和功能上与 Vue2 基本一致,但在一些细节上有了优化和改进,使得开发者在使用计算属性时更加方便和高效。
使用计算属性来描述依赖响应式状态的复杂逻辑
computed 接收一个getter函数,返回值为一个计算属性 ref 计算属性在模板中会自动解包
会自动追踪响应式依赖 当条件改变时 依赖于条件的绑定也会同步更新
计算属性 vs 方法
计算属性仅会在依赖更新时才会更新 方法 调用即更新
可写计算属性
计算属性默认是只读的, 要修改通过 getter 和 setter 来创建 get返回值 set 改值不要在getter 中
做异步请求和更改dom
类与样式绑定
Vue3 中,可以通过v-bind:class
指令或:class
简写来动态绑定元素的类名,以实现灵活的样式控制。同时,也可以使用v-bind:style
指令或:style
简写来动态绑定元素的内联样式。
以下是一个简单的示例代码,演示了在 Vue3 中如何动态绑定类名和样式:
<template>
<div>
<div
:class="{ active: isActive, 'text-danger': isError }"
:style="{ color: textColor, fontSize: textSize + 'px' }"
>
Dynamic class and style
</div>
</div>
</template>
<script>
export default {
data() {
return {
isActive: true,
isError: false,
textColor: 'red',
textSize: 20
};
}
};
</script>
在这个示例中,我们通过:class
绑定了一个对象,根据isActive
和isError
的值来动态添加类名active
和text-danger
,从而控制元素的样式。同时,通过:style
来绑定了一个对象,根据textColor
和textSize
的值来动态设置元素的文本颜色和字体大小。
通过类与样式绑定的方法,我们可以根据数据的变化来动态更新元素的样式,实现更加灵活和可维护的前端界面设计。Vue3 的类与样式绑定功能与 Vue2 相比基本一致,但在性能和响应性方面有了一定的优化和改进。
绑定 html class
绑定对象
可以给 :class(v-bind:class 的缩写) 传递一个对象来动态切换class
<div :class="{ 样式名:对象名} " />
样式是否存在取决于对象的真假
动态绑定对象式 也可以和一般的绑定对象共存
<div class = "a" :class="{ b:isTrue}"/>
绑定的对象也可以是对象形式
let obj = { <div :class=obj />
样式1 = 变量
样式2 = 变量
}
绑定的对象也可以是计算属性返回的变量
绑定数组
声明一个值为你的样式的变量
let a = ref('样式名1') <div :class=[a,b] />
let b = ref('样式名2')
在组件上使用
在组件上使用样式绑定时,如果组件只有一个元素,绑定在组件上的样式都会到组件唯一元素上
如果有多个元素需要指定那个根元素来接收 使用$attrs 来指定实现