watch和computed区别
- watch: 使用这个属性,可以监视data中指定数据的变化,然后触发这个watch中对应的function处理函数。即这个属性是用来监听data中数据改变从而进行相关操作的属性。
- computed: 在computed中,可以定义一些属性,这些属性叫做【计算属性】,计算属性的本质就是一个方法,只不过,我们在使用这些计算属性的时候,是把他们的名称,直接当作属性来使用的,并不会把计算属性,当作方法去调用
- watch和computed都是一个function,但是watch中的函数是不需要调用的,computed内部的函数调用的时候不需要加()
- watch(属性监听),监听属性的变化,computed(计算属性)通过属性计算而得来的属性
- watch一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些待定数据的变化,从而进行某些具体的业务逻辑操作,可以看作是computed跟methods的结合体
- watch需要在数据变化时执行,一般用于异步或开销较大的操作时使用
- 对于任何复杂逻辑或一个数据属性在它所依赖的属性发生变化时要发生变化,这种情况下我们最好使用计算属性computed
- computed属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用。computed中的函数必须return回最终的结果
- 当computed中的函数所依赖的属性没有发生改变的时候,那么调用当前函数的时候结果会从缓存中读取
- watch一个对象,键是需要观察的表达式,值是对应的回调函数,主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作
使用场景
- computed:当一个属性受多个属性影响的时候就需要用到computed。最典型的例子:购物车商品结算的时候
- watch:当一条数据印象多条数据的时候需要用watch。一般是当数据变化时执行异步操作或者开销较大的操作时使用。