vue中计算属性(computed)与方法(methods)以及监听器(watch)的区别

vue中计算属性(computed)与方法(methods)以及监听器(watch)的区别

计算属性(computed)与方法(methods)的区别

1.计算属性本质是包含getter和setter方法的。当获取计算属性时,实际上是在调用getter方法。vue会收集计算属性的依赖,并缓存计算属性返回的结果。只有当它所依赖的数据发生变化的时候才会重新进行计算。即计算属性会缓存上一次计算的结果,当该计算属性所依赖的数据发生变化时,会自动重新进行结果的计算并缓存

2.方法没有缓存,每次调用方法都会导致重新执行,即方法没有缓存,需要调用方法才会执行函数(以更新数据)

3.计算属性的getter和setter参数固定:getter没有参数,setter只有一个参数。而方法的参数不限。

4…最重要的区别是含义上面的区别:计算属性本质也是一个数据,可以读取也可以赋值。而方法是一个操作函数用于处理一些事情,实现某些功能。

计算属性依赖缓存相对于方法来说更加节省性能。如果不希望缓存结果应使用方法

计算属性(computed)与监听器(watch)的区别

**1.功能上:**computed是计算属性,它可以依赖于data中的数据,当它所依赖的数据发生变化时,computed会计算结果并缓存,如果它所依赖的数据没有发生变化,使用这个计算属性会调用缓存。

watch监听器用于监听data数据中的某一数据,当被监听的这一数据发生变化时会执行对应的回调函数

**2.是否调用缓存:**computed函数所依赖的属性不发生变化的时候会调用缓存;watch每次监听的值发生变化时候都会调用回调

**3.是否有return:**computed必须有return;watch可以没有

使用场景:

当一个属性受多个属性影响的时候,使用computed;例如购物车商品结算;(目的:得到一个值)

当一条数据发生变化会影响多条数据的时候,使用watch;例如搜索框 (目的:监听一个值)

**是否支持异步:**computed函数不能有异步;watch可以

猜你喜欢

转载自blog.csdn.net/m0_48895748/article/details/128242433