计算属性与监视属性的区别
computed
能完成的功能, watch
都可以完成
watch
能完成的功能, computed
不一定能完成, 如watch
可以进行异步操作
主要区别
- 计算属性是为了计算新值, 而监视属性是为了响应数据变化执行操作
- 计算属性必须要有返回值, 而监视属性不需要
- 计算属性有缓存, 依赖数据不变不会重新计算, 而监视属性没有缓存, 每次数据变化都会执行
- 计算属性不支持异步, 监视属性支持异步
- 计算属性使用声明式方式, 监视属性使用命名式
- 计算属性用于模板中的派生数据, 监视属性用于数据变化时的副作用
特性 | 计算属性 (Computed) | 监视属性 (Watch) |
---|---|---|
目的 | 计算新值 | 响应变化执行操作 |
返回值 | 必须有 | 不需要 |
缓存 | 有缓存,依赖不变不重新计算 | 无缓存,每次变化都执行 |
异步 | 不支持 | 支持 |
使用方式 | 声明式 | 命令式 |
适合场景 | 模板中的派生数据 | 数据变化时的副作用 |
使用建议
- 当需要根据其他数据计算一个值时, 使用计算属性
- 当需要在数据变化时执行异步或开销较大的操作时, 使用监视属性
大多数情况下, 计算属性是更优选择, 因为计算属性的声明式特性和缓存机制更高效