computed和watch的区别
一、这两者解决的问题
当我们的数据发生改变的时候,所有和该数据有关的数据都自动更新,执行我们定义的方法。不同于methods是需要相关的方法和交互来实现调用执行的。
二、computed和watch以及methods的区别
1、性质上
methods:定义函数,手动调用
computed:计算属性,return返回结果,自动调用
watch:观察,监听,发生改变就调用
2、使用场景
methods:一般不处理数据的逻辑,用于获取数据,和改变状态等情况
computed:多用于一个数据受多个数据影响的情况,具有缓存的特性,避免每次重新计算
watch:多用于一个数据影响多个数据的情况,且类似异步等情况的时候建议使用
3、执行时间
computed和methods的初始化是在beforeCreated和created之间完成的。(以及Props,data都是)
4、缓存
computed:有缓存,重新渲染时,要是值没有改变,会直接返回之前的
watch:无缓存,重新渲染时,要是值没有改变,也会执行
5、是否异步
computed:不支持异步,但异步监听的时候,无法监听数据变化
watch:支持异步监听
三、computed和methods的区别
无论是定义为一个计算属性还是一个函数方法,对于结果来说都是一样的,不同点在于,计算属性是根据依赖值变
化才发生改变,而函数方法需要调用执行。