Skip to content

计算属性与监视属性的区别

computed能完成的功能, watch都可以完成

watch能完成的功能, computed不一定能完成, 如watch可以进行异步操作

主要区别

  • 计算属性是为了计算新值, 而监视属性是为了响应数据变化执行操作
  • 计算属性必须要有返回值, 而监视属性不需要
  • 计算属性有缓存, 依赖数据不变不会重新计算, 而监视属性没有缓存, 每次数据变化都会执行
  • 计算属性不支持异步, 监视属性支持异步
  • 计算属性使用声明式方式, 监视属性使用命名式
  • 计算属性用于模板中的派生数据, 监视属性用于数据变化时的副作用
特性计算属性 (Computed)监视属性 (Watch)
目的计算新值响应变化执行操作
返回值必须有不需要
缓存有缓存,依赖不变不重新计算无缓存,每次变化都执行
异步不支持支持
使用方式声明式命令式
适合场景模板中的派生数据数据变化时的副作用

使用建议

  • 当需要根据其他数据计算一个值时, 使用计算属性
  • 当需要在数据变化时执行异步或开销较大的操作时, 使用监视属性

大多数情况下, 计算属性是更优选择, 因为计算属性的声明式特性和缓存机制更高效