1.概念:需要的属性本身不存在,需要依赖data中的数据计算后产生一个新的值
2.两种展示形式:
a, 函数-----只在获取值时使用
<div id="app">
<input type="text" placeholder="请输入大名" v-model="dm">
<input type="text" placeholder="请输入小名" v-model="xm">
<p>{{zhm}}</p>
</div>
new Vue({
el:"#app",
data:{
dm:"",
xm:""
},
// 计算属性 -- 选项
computed:{
zhm(){
return this.dm + this.xm
}
}
})
b,对象-----获取值和设置值时时使用
<div id="app">
<input type="text" placeholder="请输入大名" v-model="dm">
<input type="text" placeholder="请输入小名" v-model="xm">
<input type="text" v-model="zhm">
</div>
new Vue({
el:"#app",
data:{
dm:"",//123
xm:""//456
},
computed:{
// zhm(){
// return this.dm +"-" +this.xm
// }
zhm:{
get(){
return this.dm +"-" +this.xm
},
set(value){
console.log(value)
let arr = value.split("-")
console.log(arr)
this.dm = arr[0]
this.xm = arr[1]
}
}
}
})
3.computed计算属性
a.自身需要依赖另一个值得改变而使当前所在dom更新
b.计算属性不可以与data中的数据重名
c.计算属性的方法不需要添加括号调用,方法需要单独加括号调用,因为计算属性不属于方法,属于属性
d.计算属性有缓存机制:当计算属性第一次获取到响应式数据时,会缓存,在后期渲染时,会观察响应式数据是否改变,如果改变就会调用计算属性,如果没有改变会读取存储的数据,方法只用更新就会重新调用
c.当获取计算属性时会触发getter,当设置修改计算属性时会触发setter
注意:计算属性不可以使用箭头函数,否则this不会指向这个组件的实例