vue-computed

发布时间 2023-08-25 16:28:57作者: huiyii

使用场景和方法:

1、当数据A的逻辑很复杂时,把A这个数据写在计算属性中。

2、在computed中定义一个函数(看起来是一个函数,其实是一个属性)

3、通过选项computed:{计算属性a:值}。带有返回值return的函数。

特点:

  • 监听值未在data中定义,以return返回值形式;

  • 计算属性变量在computed中定义,属性监听在data中定义。

  • 计算属性默认只有get来读取,手动修改计算属性时,会触发手写的set函数。

  • 计算属性的值会被缓存,只有实例中相关依赖值改变时,才重新计算,性能好但不适合做异步请求。

  • 计算属性是声明式的描述一个值依赖了其他值,依赖的值改变后重新计算结果更新DOM。属性监听的是定义的变量,当定义的值发生变化时,执行相对应的函数

 

computed 和 methods 区别:

1、理论上,computed 所有实现可以使用 methods 完全替换

2、计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 a 还没有发生改变,多次访问 a()计算属性会立即返回之前的计算结果,而不必再次执行函数。而方法却会执行

3、我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。

computedwatch 区别:

1、Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch,然而,通常更好的做法是使用计算属性而不是命令式的 watch 回调。

2、当需要在数据变化时执行异步或开销较大的操作时, watch 方式是最有用的。其允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。