问题描述
在vue里面第一个要避免使用的就是eventBus,虽然它很方便,但是它带来的后果是更加严重的,可能引发很多难以查找的bug。
第二个就是watch。当一个组件内有多个watch的情况下,很可能就会发生这么一种情况,不知道是哪个watch引起的bug,不知道是谁触发了watch。
所以,我感到很疑惑!
在vue中如何优雅的使用watch?
以及watch设计的初衷是什么?
既然是数据驱动的框架,不应该是通过数据变化引起组件变化吗?
而像watch这种监听数据变化这种方式是不是应该被剔除?
楼主只需要将
watch
和computed
进行对比:watch
只对一个对象进行监听computed
对多个对象进行监听为什么要和
computed
对比呢,因为两者的实现原理是一样的,都是通过观察者模式,并且用的时候的感觉也很相似,无非是监听的数据变化了触发的一系列动作。那么watch的适用场景自然而然就出来了
需要对单个对象的变化做额外动作且无需返回值的
那如果有两个对象其中任意一个做变化,且不管其中哪个对象变化都是做相同的动作的时候应该怎么办呢
把这两个对象写在一个
对象
里面,再watch
这个对象例如:
或者
多个
watch
之间应该尽量避免数据耦合,上面介绍了一种解耦方式,抛砖引玉存在即合理,没这个需求肯定不会出这个API
楼主加油