一、概述
computed 和 watch 都是vue框架中监听数据变化的属性
二、计算属性 computed
- 依赖于其他属性的值,并且computed的值有缓存
- 只有它依赖属性的值发生改变 下一次获取computed的值才会重新计算
- 必须有return返回
- 使用方法与data中的数据一样
- 使用场景 如:购物车
三、监听属性 watch
- watch中的函数有两个参数(newData,oldData)
- 当一个属性值发生变化时,需要执行相应的操作
- 监听的数据必须是data中声明的或者是父组件通过props传递过来的,放发生变化时,会触发其他的操作,函数有两个参数
- immediate 组件加载立即触发回调函数
- deep 深度监听,发生数据的内部变化,在负责数据类型中使用。例如 在数组中的数据发生变化 需要注意的是deep无法监听到数组或对象内部的变化
- 使用场景 如搜索框
四、区别
- 功能:computed是一个计算属性,依赖其他属性的改变;watch是监听一个值得变化而执行对应的回调
- 是否调用缓存:computed函数所依赖的属性不变的时候会调用缓存;watch每次监听的值发生变化时候都会调用回调
- 是否调用return:computed必须有;watch可以没有
- 是否支持异步:computed函数不能有异步;watch可以