computed和watch的区别
computed
计算属性,当依赖发生变动时它才会触发重新计算,否则使用的是缓存中的数据
原生computed不支持异步,但你可以通过vue-async-computed
使用异步的computed属性
应用场景:
当你需要一个属性的值是基于另外一个或以上属性时,通常会使用计算属性了,例如淘宝购物车中的总金额,它需要依赖购物车中的商品继续计算改变。|
watch
监听函数,当依赖属性发生变动时,立即触发回调函数
回调函数接收两个参数,分别是 变化之后的值,和变化前的值
在Vue3中,watch支持传入ref[]
进行监听,尽可能减少了多个watch的数量
在Vue3中,如果监听的是一个对象值时,需要使用回调函数()=>props.xx
来传递参数
参数
- deep 对于对象类型是否深监听
- flush 回调执行时机
- post 在Vue更新Dom之后触发
- immediate 进入页面时立即触发
应用场景
业务中,当一个属性发送改变时,需要执行对应操作时可以使用watch函数。