vue中计算属性缓存(computed ) vs 方法(methods)
1、为什么需要计算属性缓存(computed )?
答:如果我们有一个性能开销比较大的计算属性arrayOperation ,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 arrayOperation 。如果没有缓存,我们将不可避免的多次执行arrayOperation 的 getter!如果你不希望有缓存,请用方法来替代。
2、计算属性缓存(computed )不好之处是?
答:我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。这就意味着只要 message
还没有发生改变,多次访问 reversedMessage
计算属性会立即返回之前的计算结果,而不必再次执行函数。
这也同样意味着下面的计算属性将不再更新,因为
Date.now()
不是响应式依赖:computed: {
now: function () {
return Date.now()
}
}
3、计算属性缓存(computed )适用?
答:存在复杂逻辑、需要用到缓存时等等可以用到计算属性computed
4、虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch
选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。