1.vue计算属性-computed
一个数据, 依赖另外一些数据计算而来的结果
场景: 一个变量的值, 需要用另外变量计算而得来
语法:
computed: {"计算属性名" () {return "值"}
}
注意1: 计算属性和data属性都是变量-不能重名. 用法和data相同
注意2: 函数内变量变化, 会自动重新计算结果返回
例子:
-
需求:
- 需求1: 求2个数的和显示到页面上
- 需求2: 字符串翻转
<template><div><p>和为: {{ num }}</p><p>{{ reverseMessage }}</p></div>
</template><script>
export default {data() {return {a: 10,b: 20,message: "我是个字符串",};},computed: {num() {return this.a + this.b;},reverseMessage() {return this.message.split("").reverse().join("");},},
};
</script>
结果:

2.vue计算属性-缓存
计算属性是基于它们的依赖项的值结果进行缓存的,只要依赖的变量不变, 都直接从缓存取结果

<template><div><p>{{ reverseMessage }}</p><p>{{ reverseMessage }}</p><p>{{ reverseMessage }}</p><p>{{ getMessage() }}</p><p>{{ getMessage() }}</p><p>{{ getMessage() }}</p></div>
</template><script>
export default {data(){return {msg: "Hello, Vue"}},// 计算属性优势:// 带缓存// 计算属性对应函数执行后, 会把return值缓存起来// 依赖项不变, 多次调用都是从缓存取值// 依赖项值-变化, 函数会"自动"重新执行-并缓存新的值computed: {reverseMessage(){console.log("计算属性执行了");return this.msg.split("").reverse().join("")}},methods: {getMessage(){console.log("函数执行了");return this.msg.split("").reverse().join("")}}
}
</script><style></style>
总结一下:
计算属性根据依赖变量结果缓存, 依赖变化重新计算结果存入缓存, 比普通方法性能更高

3.vue计算属性-完整写法
计算属性也是变量, 如果想要直接赋值, 需要使用完整写法

语法:
完整语法:computed: {// "计算属性名" (){},"计算属性名": {set(值){},get(){return 值}}}
需求:
- 计算属性给v-model使用
页面准备输入框
<template><div><div><span>姓名:</span><input type="text" v-model="full"></div></div>
</template><script>
// 问题: 给计算属性赋值 - 需要setter
// 解决:
/*完整语法:computed: {"计算属性名" (){},"计算属性名": {set(值){},get(){return 值}}}
*/
export default {computed: {full: {// 给full赋值触发set方法set(val){console.log(val)},// 使用full的值触发get方法get(){return "无名氏"}}}
}
</script><style></style>
想要给计算属性赋值, 需要使用set方法










![[C语言]C语言解决汉罗塔问题(初学者版)](https://img-blog.csdnimg.cn/d8b5211993a6410388dd375a2356e3be.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aW95YOP5Y2B5Lmd5LqG,size_12,color_FFFFFF,t_70,g_se,x_16)








