谈谈vue.js中methods watch和compute的区别和联系

最近一直在项目开发中使用Vue.js,对于Vuejs中的computed、methods、watch的理解一直不是很透彻,通过多方查资料作demo,今天经过这篇文章给你们介绍下关于vue中计算属性(computed)、methods和watched之间的区别:html

首先要说,methods,watch和computed都是以函数为基础的,但各自却都不一样; vue

1.watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,全部依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用相关的函数去实现数据的变更。函数

2.对methods:methods里面是用来定义函数的,很显然,它须要手动调用才能执行。
  而不像watch和computed那样,“自动执行”预先定义的函数this

 【总结】:methods里面定义的函数,是须要主动调用的,而和watch和computed相关的函数,会自动调用,完成咱们但愿完成的做用code

从性质上看:htm

1.methods里面定义的是函数,methods是方法,只要调用它,函数就会执行;对象

2.computed是计算属性,事实上和和data对象里的数据属性是同一类的(使用上),开发

<p>原始数据:{{msg}}</p>  
<p>改变后的数据:{{changemsg}}</p>  
var vm=new Vue({ 
el:"#example",   
data:{ 
 msg:"hello",  
},  
computed:{  //计算属性
    changemsg:function(){  
    return this.msg.split("").reverse().join("");  
    },  
}

你在取用的时候,用this.changemsg去取用,就和取data同样(不要当成函数调用!!)it

computed属性  VS watched 属性:io

watch和computed各自处理的数据关系场景不一样

1.watch擅长处理的场景:一个数据影响多个数据

2.computed擅长处理的场景:一个数据受多个数据影响

watched属性:代码更易于理解,它指定监测的值是谁,而后相应的改变其余的值。

var vm = new Vue({  
el: '#demo',  
data: { 
    firstName: 'Foo', 
    lastName: 'Bar',  
    fullName: 'Foo Bar' 
   },  
watch: {  
    firstName: function (val) {  
        this.fullName = val + ' ' + this.lastName 
    },  
    lastName: function (val) {   
        this.fullName = this.firstName + ' ' + val 
    }  
   } 
})

computed属性:

var vm = new Vue({ 
       el: '#demo',  
     data: {  
           firstName: 'Foo', 
           lastName: 'Bar'
   }, 
 computed: {  
       fullName: function () {   
           return this.firstName + ' ' + this.lastName 
       }  
   } 
})
相关文章
相关标签/搜索