浅析computed 和 watch 的区别

108 阅读1分钟
  • computed是计算属性,watch是监听

  • computed是用来计算一个值的,这个值:

    • 1.调用时不需要加括号。可以当属性一样用
    • 2.根据依赖会自动缓存,如果依赖不变,computed的值就不会重新计算
  • watch是用来监听的,当监听的数据变化时,那么就执行一个函数,里面有两个选项:

    • immediate,表示是否在第一次渲染的时候执行这个函数
    • deep,用来控制监听对象时是否要看这个对象里面的属性变化(否则的话,就算obj里面的a的值变化,由于obj地址没有变,watch默认obj不变)
  • watch允许我们:

    • 1.执行异步操作 (访问一个 API),

    • 2.限制我们执行该操作的频率,

    • 3.并在我们得到最终结果前,设置中间状态,

      这些computed无法做到

  • 总结:

    如果一个数据依赖于其他数据, 那么把这个数据设计为 computed 的

    如果你需要在某个数据变化是做一些事情, 使用 watch 来观察这个数据变化