计算属性是基于它们的响应式依赖进行缓存的 ,计算属性比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化。
computed是一个选项属性,需要书写成一个对象格式,内部写成函数格式。
<body>
<div id="app">
{{i}}
<!-- 给按钮绑定一个事件,用来改变i值 -->
<button type="button" @click="i++">+</button>
<!-- 改变数据再进行渲染对比 -->
<button @click="str='2021-11-11'">更新日期</button>
<hr >
{{str}}
<!-- 通过用方法和计算属性来渲染日期,进行对比 -->
<div>{{parseTime()}}</div>
<div>{{getTime}}</div>
</div>
<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
new Vue({
el: '#app',
data: {
str: '2021-7-6',
i: 0,
obj: {}
},
computed:{
getTime(){
console.log('getTime....计算属性')
let s = this.str
let arry = s.split('-')
return `${arry[0]}年${arry[1]}月${arry[2]}日`
}
},
methods:{
parseTime(){
console.log('parseTime....方法')
let s = this.str
let arry = s.split('-')
// this.obj.a = 1 //此处添加的属性是非响应式的
return `${arry[0]}年${arry[1]}月${arry[2]}日`
}
}
})
</script>
</body>
方法在每次调用的时候都会执行一次,方法不会进行缓存;
而计算属性会把计算结果进行缓存,只要str值不发生改变,计算属性就会把第一次的值进行返回。