Vue computed 的嵌套

比如下面的例子:

<div id="app">
    {{v1}}
    <button @click="v3++">点击</button>
</div>

data(){
    return {
        v3: 3,
    }
},
computed: {
    v1() {
        return this.v2
    },
    v2() {
        return this.v3
    }
}

  

v3++,因为v3的get方法中收集了v2的watcher和render的watcher到自己的闭包中,所以++的时候的set方法会导致v2的dirty为true,并重新render

但是注意v3的闭包中也有v1的watcher,因为v2的get方法被重写了,页面上显示v1的时候,会调用的v3的get方法。所以++的时候v1的dirty也为true

原文地址:https://www.cnblogs.com/chuliang/p/10909707.html