vue计算属性

151 阅读2分钟

计算属性

计算属性就是当其依赖属性的值发生变化时,这个属性的值会自动更新,与之相关的DOM部分也会同步自动更新。

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

计算属性的用法

在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以。

        计算属性
        形式:方法
        仅在创建vue对象或修改关联属性时调用1次,后续调用都是直接从内存中取值
    -->
    <div id="app">
        <p>{{msg}}</p>
        <p>{{msgAttr}}</p>
    </div>
    <script>
        let vm = new Vue({
            el: "#app",
            data: {
               msg:"足球,篮球"
            },
            computed:{
                msgAttr:function(){
                    return this.msg.replace(",","、");
                }
            },
            methods:{
                msgMd:function(){
                    return this.msg.replace(",","、");
                }
            }
        })
    </script>

TG(FAOK1B}LSH)7D5S4CM@T.png

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

计算属性缓存 其实细心的话就会发现,调用methods里的方法也能实现和计算属性一样的效果,甚至有的方法还能接收参数,使用起来更加的灵活,既然使用methods就可以实现,那为什么还需要计算属性呢?原因就是计算属性是基于他的依赖缓存的。一个计算属性所依赖的数据发生变化时,他才会重新取值, 所以依赖的text只要不改变,计算属性也就不更新。

使用计算属性还是methods取决于你是否需要缓存,当遍历大数组和做大量计算时,应当使用计算属性

计算属性禁用箭头函数

  注意,不应该使用箭头函数来定义计算属性函数 (例如 aDouble: () => this.a * 2)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.a 将是 undefined

  当然有很多this需要指向vue实例的时候,都需要慎用箭头函数。