Skip to content

computed和watch的区别

computed

计算属性,当依赖发生变动时它才会触发重新计算,否则使用的是缓存中的数据

原生computed不支持异步,但你可以通过vue-async-computed使用异步的computed属性

应用场景:

当你需要一个属性的值是基于另外一个或以上属性时,通常会使用计算属性了,例如淘宝购物车中的总金额,它需要依赖购物车中的商品继续计算改变。|

watch

监听函数,当依赖属性发生变动时,立即触发回调函数

回调函数接收两个参数,分别是 变化之后的值,和变化前的值

在Vue3中,watch支持传入ref[]进行监听,尽可能减少了多个watch的数量

在Vue3中,如果监听的是一个对象值时,需要使用回调函数()=>props.xx来传递参数

参数

  • deep 对于对象类型是否深监听
  • flush 回调执行时机
    • post 在Vue更新Dom之后触发
  • immediate 进入页面时立即触发

应用场景

业务中,当一个属性发送改变时,需要执行对应操作时可以使用watch函数。