前言:

好歹也是用了三年的Vue老手了,天天搬砖,也没意思,想着研究一些深层次的东西,自己造造轮子,顺便换个城市,换个工作。

第一题:Vue中Watch和Computed方法的区别?

答:

先说相同点吧,两个方法都可以监听数据变化,执行一些操作。

再说不同点:

1.写法不同,computed  无法拿到变化之前的值,watch可以。

// 计算属性
computed: {
    fullName() {
        return firstName + lastName;
    }
    fullName1: {
        get: function() {
           return this.firstName + this.lastName;
        }
        set: function() {
            this.firstName = 'new_firstName'
        }
    }
}

// watch方法 
watch: {

    firstName(newVal, oldVal) {
           // to do thing ...
    }
    lastName(newVal, oldVal) {
           // to do thing ...
    }
    'obj.firstName':function() {
        // to do thing ...
    }
}

2. 应用场景不同,计算属性是当前计算的元素依赖于多个变量,例如firstName和lastName,可以通过简单的表达式得到fullName,如果要watch方法,则需要分别监听firstName和lastName。

3. 当需要在数据变化后,执行一些异步操作或者开销较大的操作时,用watch更有效,因为computed其实最初的设计是为了做一些简单运算的,而且不支持异步。

4. computed支持数据缓存,如果只是表达式中的数据变化,但是结果不变,他会直接调用缓存的值。而watch数据变化就会触发。

所以,当你在项目中需要监听数据变化的时候,思考一下,合理使用,可以提高项目性能。

 

 

Logo

前往低代码交流专区

更多推荐