watch、computed、methods的区别?
三者都可以处理响应式状态的变化,但是computed是属性,watch和methods是函数,三者的
使用场景不同:
computed的使用场景:当某个状态需要依赖响应式状态根据复杂逻辑生成,写在data里太臃肿,就用computed;computed的计算结果会被缓存,如果需要进行大量计算,可以使用computed。但是computed默认只会生成getter,并且getter里只应该书写计算逻辑,不应该有异步代码或者其他副作用逻辑。
watch的使用场景:当需要根据监听的数据作出一些非计算/异步的逻辑时,或者当监听的不是响应式状态,而是响应式状态下的某个属性时,可以选择watch代替computed
methods的使用场景:无论是同步还是异步逻辑、计算还是非计算逻辑,methods都可以执行
调用方式不同:
computed/watch:根据响应式状态的变化自动调用
methods:methods不能根据响应式状态的变化自动调用,需要手动触发
加载顺序不同:
1.watch设置了immediate,组件加载后加载顺序:watch->computed
2.触发事件后(当computed依赖状态变化时),computed->methods->watch