计算属性
PPG007 ... 2021-12-25 About 1 min
# 计算属性
注意
methods 和 computed 中方法不要重名。
Tips
methods 中定义的是方法,调用时要加括号,而且每次调用返回值是重新计算的。
computed 中定义的是属性,调用时不加括号,每次调用返回值不会重新计算,除非它所依赖的内容发生改变。
计算属性相当于缓存。
# 计算属性示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="root">
姓:<input type="text" v-model:value="firstName">
<hr>
名:<input type="text" v-model:value="lastName">
<hr>
<span>姓名:{{name}}</span>
<hr>
</div>
<script>
const vm=new Vue({
el:'#root',
data() {
return {
firstName:'',
lastName:'',
}
},
computed:{
name:{
// 初次读取
// 所依赖的数据发生变化
get(){
// 此处this是vm
return this.firstName+"-"+this.lastName;
}
//可以不写set方法,如果不写set方法,将不能修改对应的属性
}
}
})
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# get 方法调用时机
- 初次读取时会执行一次。
- 当依赖的数据发生改变时会被再次调用。
计算属性原理:
与数据代理类似,借助 getter、setter 实现。
Tips
计算属性最终会出现在 Vue 实例上,可以直接调用。
# 计算属性简写
const vm=new Vue({
el:'#root',
data() {
return {
firstName:'',
lastName:'',
}
},
computed:{
name(){
//相当于getter
return this.firstName+"-"+this.lastName;
}
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
警告
一个计算属性中不能操作自己,包括调用和赋值,会无限递归出错。