美文网首页
Vue 计算属性的秘密

Vue 计算属性的秘密

作者: 养乐多__ | 来源:发表于2019-08-04 00:39 被阅读0次

    1. 什么是计算属性

    我们己经可以搭建出一个简单的 Vue 应用,在模板中双向绑定一些数据或表达式了。但是表达式如果过长,或逻辑更为复杂时,就会变得臃肿甚至难以阅读和维护,如:

    <div>
        {{text.split(',').reverse().join(',')}}
    </div>
    

    上述表达式包含三个操作,并不是很清晰,所以在遇到复杂的逻辑时应该使用计算属性。

    • 所有的计算属性都以函数的形式写在 Vue 实例内的 computed 选项内,最终返回计算后的结果。

    2. 计算属性用法

    1. 在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以。除了上例简单的用法,计算属性还可以依赖多个 Vue 实例的数据,只要其中任一数据变化,计算属性就会重新执行,视图也会更新

    2. gettersetter 方法
      每一个计算属性都包含一个 getter 方法和一个 setter 方法。

    • 如果计算属性后面直接跟一个 function,使用的就是计算属性的默认方法 getter 来读取。例 展示两个购物车的物品总价:
    computed: {
        prices: function(){
            var prices = 0
            for(let i=0; i<this.package.length; i++){
                prices += this.package[i].price * this.package[i].count
            }
            return prices
        }
    }
    
    • 我们也可以在需要时使用 setter 函数 , 当手动修改计算属性的值就像修改一个普通数据那样时,就会触发 setter 函数,执行一些自定义的操作。例 显示全名:
    computed: {
        fullName: {
            get: function(){
                return this.firstName + ' ' + this.lastName
            },
            set: function(newValue){
                // 传进来的值用逗号分隔,如'Liu,Bei'
                var names = newValue.split(',') // 分隔为数组
                this.firstName = names[0]
                this.lastName = names[1]
            }
        }
    }
    
    1. 计算属性除了上述简单的文本插值外,还经常用于动态地设置元素的样式名称 class 和内联样式 style。

    2. 小技巧

    计算属性还有两个很实用的小技巧容易被忽略:
    1. 计算属性可以依赖其他计算属性;
    2. 计算属性不仅可以依赖当前 Vue 实例的数据,还可以依赖其他实例的数据。

    3. 计算属性缓存

    计算属性缓存是定义在计算属性 computed 里的。

    1. 调用 methods 里的方法也可以与计算属性起到同样的作用。
    • 页面中的方法: 如果是调用方法,只要页面重新渲染,方法就会重新执行;若不需要渲染,则不需要重新执行。
    • 计算属性:不管是否渲染,只要计算属性依赖的数据(缓存)未发生变化,就永远不变。
    1. 结论
    • 用计算属性可以实现的问题,在 methods 里定义一个方法也可以实现相同的效果,甚至该方法还可以接受参数,使用起来更灵活。
    • 既然使用 methods 就可以实现,那么为什么还需要计算属性呢?因为计算属性是基于它的依赖缓存的,一个计算属性所依赖的数据发生变化时,它才会重新取值,所以 text 只要不改变,计算属性也就不更新。
    1. 何时使用二者
    • 使用计算属性还是 methods 取决于是否需要缓存,当遍历大数组和做大量计算时,应当使用计算属性,除非不希望得到缓存;
    • 当需要数据实时发生变化时,适合用 methods

    相关文章

      网友评论

          本文标题:Vue 计算属性的秘密

          本文链接:https://www.haomeiwen.com/subject/zwqedctx.html