computed理解

一开始使用计算属性时,我会有这样的疑惑:计算属性设计的初衷是什么?计算属性能实现的,methods也能实现,如何选择?为什么专门给出一个计算属性,它和watch的区别在哪里?

1、为何要computed?

vue的数据(data)是响应式的,有些时候,模板想要绑定的不是数据本身,而是数据的转换或者一定规则的计算结果(return g*1000),这种情况下就需要计算属性上场了。计算属性属于响应式依赖,只要依赖的数据发生变化,计算属性的值就自动重新计算,无需重新调用和触发,只要在模板中绑定计算属性,它的值就会随着依赖的数据同步变化。

2、与methods的区别?

可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要依赖的数据还没有发生改变,多次访问计算属性会立即返回之前的计算结果,而不必再次执行函数。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数,花费性能开销比较大。

两者的区别就是computed有缓存,methods没有缓存,每次都重新计算。

这也同样意味着下面的计算属性将不再更新,因为 Date.now() 不是响应式依赖:

computed: {

  now: function(){

    return Date.now()

  }

}

3、与侦听属性watch的区别?

computed适合监听多个数据变化导致一个结果变化的场景。

watch适合一个数据变化,导致多个结果变化的场景

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容