【前端开发】Vue中Watch的Immediate和Deep到底是什么意思?

12 min read

在Vue中,我们可以使用watch来监听特定数据的变化,当这些数据发生变化时,我们可以执行一些操作。当我们使用watch时,可以通过传递选项来配置我们需要监听的数据以及我们需要执行的操作。其中,immediatedeep是两个常见的选项。

  • immediate选项:

immediate选项指定Vue在初始化时立即执行watch的回调函数。例如:

watch: {
  myData: {
    immediate: true,
    handler: function(newVal, oldVal) {
      console.log('myData has changed')
    }
  }
}

在上面的例子中,immediate选项被设置为true,所以Vue在初始化时会立即执行handler函数。

  • deep选项:

deep选项指定Vue深度监听对象的属性变化,而不仅仅是监听对象的引用变化。例如:

watch: {
  myData: {
    deep: true,
    handler: function(newVal, oldVal) {
      console.log('myData has changed')
    }
  }
}

在上面的例子中,deep选项被设置为true,所以当myData对象中的任意一个属性发生变化时,handler函数都会被执行。

请注意,使用deep选项可能会导致性能问题,因为Vue需要递归检查对象的属性变化。因此,应该慎重使用deep选项。同时,当我们监听一个数据时,如果只需要在数据的引用发生变化时执行回调函数,那么不需要使用deep选项。而如果需要监听对象内部属性的变化,则需要使用该选项。