美文网首页
什么是watch?它与computed的区别是什么?

什么是watch?它与computed的区别是什么?

作者: 乔布斯瞧不起 | 来源:发表于2023-06-25 09:03 被阅读0次

watch是Vue的一个选项,它允许我们监听某个值的变化,从而触发对应处理逻辑。watch可以监听单个值或多个值,computed只能有返回值,依赖多个值计算得出一个结果。

watch与computed的主要区别有:

  1. computed具有缓存功能,只有在它依赖的数据发生改变时才会重新计算,watch每次依赖数据变化都会执行。
  2. computed一般用于计算数据依赖复杂逻辑,watch更适用于执行异步操作或开销较大的计算。
    例如:
js
computed: {
  fullName() {
    return this.firstname + ' ' + this.lastname
  }
}

watch: {
  firstname(newValue, oldValue) {
    this.fullName = newValue + ' ' + this.lastname
  }
} 

上面这段代码,如果firstname没有发生变化,则computed的fullName不会重新计算,而每次firstname变化,watch都会执行对应的函数。

所以,总结如下:

  • 使用computed:
  1. 当依赖的数据需要经过复杂的计算或处理得到最终值时。(computed具有缓存)
  2. 需要根据多个数据计算一个新值时。
  • 使用watch:
  1. 当需要在值变化后执行异步操作或开销较大的运算时。(watch每次执行)
  2. 需要监听某个值的变化,从而触发其他行为时。
  3. 需要深度监听复杂对象的值变更时。(通过deep选项)

所以,computed和watch都可以用于响应式数据的变化监听,但在具体使用场景和目的上有所区别。两个功能共同使用,可以使我们在Vue中实现完整的响应式。

相关文章

网友评论

      本文标题:什么是watch?它与computed的区别是什么?

      本文链接:https://www.haomeiwen.com/subject/oobiedtx.html