Vue中的计算属性与监视属性

2019-01-17  本文已影响0人  雪域狼王jayh

1. 前言


2.计算属性(computed)

废话少说,先上代码

<div>
        <p>Original message: "{{ message }}"</p>
        <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>

export default {
        data(){
            return { 
                message: 'Hello',
            }
        },
        computed: {
            reversedMessage: function () {
                return this.message.split('').reverse().join('');
            }
        }

可以看到我们使用的计算属性替代了模板内表达式的功能。所以,对于任何复杂逻辑,你都应当使用计算属性。而且计算属性让我们只关注于逻辑实现,至于后期的数据在界面上的表示形式则直接由Vue.js负责,读者可以看到我们并没有直接参与页面展示上面来
此外,传统的直接通过表达式求值的方式需要我们自行取值,而计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。也就是说,计算属性会直接从缓存拿值,并伴随着值的改变而改变。而传统的直接通过表达式求值的方式需要我们在拿值之前需要执行一次getter()函数


3. 监听属性

监听属性其实质是一次异步回调,希望读者在想到使用监听属性之前多考虑能否采用计算属性来取代监听属性
对比同一个功能实现

//计算属性
computed: {
        fullName2: function () {
              return this.firstName + ' ' + this.lastName
        }
}
//监听属性
watch: {
         firstName: function (val) {
               this.fullName = val + ' ' + this.lastName
        },
        lastName: function (val) {
               this.fullName = this.firstName + ' ' + val
       }
} 

可以看到计算属性的代码更加简洁也更加高效,而且就实现效果而言,明显计算属性会更好一点
读者可以自行实现这同一种功能的两种实现方式,就可以比较出来为什么说计算属性优于监听属性了

上一篇 下一篇

猜你喜欢

热点阅读